web-dev-qa-db-ja.com

Pythonプロパティにdocstringを配置する正しい方法は何ですか?

複数のdocstringを作成する必要がありますか、それとも1つだけですか(どこに配置する必要がありますか)?

_@property
def x(self):
     return 0
@x.setter
def x(self, values):
     pass
_

property()がdoc引数を受け入れることがわかりました。

44
Paul Draper

1)help(MyClass)が表示するものであり、2) Pythonのドキュメント-x.setterの例を参照 での実行方法でもあるので、ゲッターにdocstringを記述します。

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

その後:

>>> 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

>>>

セッターのドキュメント文字列「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()
44
Ben Hoyt