将文档字符串放在Python属性上的正确方法是什么?

Pau*_*per 42 python properties decorator

我应该制作几个文档字符串,还是仅存一个(我应该把它放在哪里)?

@property
def x(self):
     return 0
@x.setter
def x(self, values):
     pass
Run Code Online (Sandbox Code Playgroud)

我看到property()接受doc参数.

Ben*_*oyt 43

在getter上编写文档字符串,因为1)显示的内容help(MyClass),以及2)它是如何在Python文档中完成的- 请参阅x.setter示例.

关于1):

class C(object):
    @property
    def x(self):
        """Get x"""
        return getattr(self, '_x', 42)

    @x.setter
    def x(self, value):
        """Set x"""
        self._x = value
Run Code Online (Sandbox Code Playgroud)

然后:

>>> c = C()
>>> help(c)
Help on C in module __main__ object:

class C(__builtin__.object)
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables (if defined)
 |
 |  __weakref__
 |      list of weak references to the object (if defined)
 |
 |  x
 |      Get x

>>>
Run Code Online (Sandbox Code Playgroud)

请注意,将忽略setter的docstring"Set x".

因此,您应该在getter函数上为整个属性(getter和setter)编写docstring,以使其可见.良好属性docstring的示例可能是:

class Serial(object):
    @property
    def baudrate(self):
        """Get or set the current baudrate. Setting the baudrate to a new value
        will reconfigure the serial port automatically.
        """
        return self._baudrate

    @baudrate.setter
    def baudrate(self, value):
        if self._baudrate != value:
            self._baudrate = value
            self._reconfigure_port()
Run Code Online (Sandbox Code Playgroud)

  • 很好,Python文档中有一个示例。 (2认同)