2013-03-16 2 views
0

sphinx autodoc 확장 기능을 사용하여 문서를 만들 때 함수 인 것처럼 클래스 인스턴스 (클래스 자체가 아닌)를 어떻게 문서화 할 수 있습니까? 클래스에는 __call__ 메서드가 정의되어 있습니다.클래스 인스턴스를 함수로 문서화하기

답변

1

문제를 해결하기 위해 스핑크스 확장을 사용할 수 있습니다.

  1. conf.py에서 :

    1. extensions 목록
  2. 을에서 새로운 모듈 이름으로 sphinx.ext.autodoc을 대체 conf.py

  3. sys.path에 적절한 경로를 추가 나를 위해 다음과 같은 상황이 충분히 있었다 새 모듈 :

    1. 수입 sphinx.ext.autodoc
    2. .autodoc.setup()를 호출 setup(app) 함수를 만들 .autodoc.FunctionDocumenter
    3. 의 서브 클래스를 만든 다음이 따라서 당신이 필요합니다, 기능 문서 기록기를 대체 할 것으로 app.add_autodocumenter(SubclassName)

주를 호출 그것들을 유용하게 만드십시오. 고유 한 문자열을 사용하여 objtype 클래스 상수를 값으로 정의하여이 문제를 피할 수는 있지만,이 경우 더 많은 작업이 필요합니다. 정기적 인 기능에 대해 신경 쓰는 것이 더 쉽습니다.

누군가 관심이있을 경우 코드는 here입니다.

+1

또한'sphinx.ext.autosummary'를 사용할 때 조심하십시오 : Sphinx 1.2.1 이후, [custom-set documenters를 덮어 씁니다] (https://github.com/sphinx-doc/sphinx/commit/574a796) 기본 설정으로 해결 방법은 autosummary 덮어 쓰기 후에 호출되는 "env-before-read-docs"이벤트에서 문서 센터를 설정하는 것입니다. 예는 [여기] (https://github.com/F30/salt/blob/autodoc-fix/doc/_ext/saltautodoc.py)에서 볼 수 있습니다. – F30

0

은 내가 특별히 autodoc에 익숙하지 해요,하지만 당신이 시도 할 수 있습니다 :

class MyClass(object): 
    ... 
    def __call__(self): 
     ... 

c = MyClass() 
""" 
this is a function-like object. 
""" 

c2 = MyClass() 
""" 
this is another function-like object. 
""" 

또는이 :

#: this is a function-like object. 
c = MyClass() 
+0

'powerline.segments.vim.repository_status = '과 같은 것을 생성합니다. 첨부 된 문서는 맞지만'RepositoryStatusSegment (Thread-1, initial)> '이 아닌'(* args, ** kwargs)'를 생성해야합니다. – ZyX

+0

두 번째 변형이 이미 시도되었습니다. 그것은 같은 문제가 있습니다. – ZyX

관련 문제