プロパティを説明するドキュメントでは、次のように述べられています。
追加の関数には、必ず元のプロパティと同じ名前 (この場合は x) を付けてください。
つまり、getter、setter、deleter メソッドはすべて同じ名前でなければなりません。
なんで?また、Python はメソッドのオーバーロードを禁止していますね。
編集: Python 2.6 で実行すると、次のコードが失敗するのはなぜですか?
class Widget(object):
def __init__(self, thing):
self.thing = thing
print self.thing
@property
def thing(self):
return self._thing
@thing.setter
def set_thing(self, value):
self._thing = value
if __name__ == '__main__':
Widget('Some nonsense here')
その出力は次のとおりです。
Traceback (most recent call last):
File "widget.py", line 16, in <module>
Widget('Some nonsense here')
File "widget.py", line 3, in __init__
self.thing = thing
AttributeError: can't set attribute
set_thing() の名前を thing() に変更すると、コードは正常に機能します。