>

스핑크스 자동 문서 사용 @classproperty 가있는 메소드에 대한 문서를 생성하고 싶습니다  그리고 @classmethod  데코레이터. 메소드의 문서 대신 @classmethod 를 얻습니다. 님의 문서. 데코레이터를 삭제하면 모든 것이 올바르게 작동합니다. 클래스 코드는 다음과 같이 구성됩니다 :

class Example(object):
    @classproperty
    @classmethod
    def example_method(cls):
       """Method description"""
       pass

클래스 속성 데코레이터 :

class classproperty(property):
    def __get__(self, obj, type=None):
        return self.fget.__get__(None, type)()

그리고 다음을 사용하여 문서를 생성하고 있습니다 :

.. autoclass:: Example
    :members:


  • 답변 # 1

    스핑크스 문서에서

    와이즈 비즈

    여기서 문제는 데코레이터가 함수를 감쌀 때 docstring을 떨어 뜨린다는 것입니다. 와이즈 비즈  도움이 될 것입니다.

    주제에 관한 파이썬 문서의 패턴을 따를 수 있습니다. 사용 사례의 경우 다음을 수행 할 수 있습니다.

    Note

    If you document decorated functions or methods, keep in mind that autodoc retrieves its docstrings by importing the module and inspecting thedocattribute of the given function or method. That means that if a decorator replaces the decorated function with another, it must copy the originaldocto the new function.

    From Python 2.5, functools.wraps() can be used to create well-behaved decorating functions.

    이것은 wraps 에서 docstring을 가져와야합니다.  올바르게 통과했습니다.

    from functools import wraps def classpropertymethod(f): @wraps(f) def wrapper(*args, **kwargs): return classproperty(classmethod(f(*args, **kwargs))) return wrapper @classpropertymethod def example_method(cls): """Method description""" pass

  • 이전 javascript - react-native가있는 서버없이 실행할 수있는 APK를 어떻게 생성 할 수 있습니까?
  • 다음 firebase - Firestore에서 Collection Group Queries를 사용하는 다중 테넌트 앱에 대한 모범 사례는 무엇입니까?