Pythonでちゃんとプロパティのアクセサを設定する場合、property
関数を使って以下の様に書くのが一般的。たとえばFoo
クラスにbar
プロパティをくっつける場合。
class Foo(object):
def __get_bar(self):
return self.__bar
def __set_bar(self, value):
self.__bar = value
def __del_bar(self):
del self.__bar
bar = property(__get_bar, __set_bar, __del_bar,
doc="short explanation for bar property")
ただこの書き方だと1つのプロパティに対して3つもメソッドを作る必要がありごちゃごちゃする。
そんなとき、これをまとめて以下のように書くことも可能。上と下は同じ意味になる。
class Foo(object):
def bar():
doc = "short explanation for bar property"
def fget(self):
return self.__bar
def fset(self, value):
self.__bar = value
def fdel(self):
del self.__bar
return locals()
bar = property(**bar())
fdel()
やdoc
はいらなければ省略可能。
一つのプロパティに対して同じ名前のメソッド一つにまとまるからちょっと見やすくなる...気がする。