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)