Python 組み込み関数property()を使用する好ましい方法はどれですか? デコレーターとして、または変数に保存しますか?
property()
変数に保存する例を次に示しますcolor
。
class Train(object):
def __init__(self, color='black'):
self._color = color
def get_color(self):
return self._color
def set_color(self, color):
self._color = color
def del_color(self):
del self._color
color = property(get_color, set_color, del_color)
これは同じ例ですが、代わりにデコレータを使用しています。
class Train(object):
def __init__(self, color='black'):
self._color = color
@property
def color(self):
return self._color
@color.setter
def color(self, color):
self._color = color
@color.deleter
def color(self):
del self._color
読み取り専用プロパティにデコレータ構文を使用するのが好きな人がいることがわかりました。例えば。
class Train(object):
def __init__(self, color='black'):
self._color = color
@property
def color(self):
return self._color
ただし、変数に保存するときにも同じ機能を実現できます。
class Train(object):
def __init__(self, color='black'):
self._color = color
def get_color(self):
return self._color
color = property(get_color)
PEP20 が宣言しているため、同じ機能の 2 つの方法で混乱します。
それを行う明白な方法が 1 つ (できれば 1 つだけ) ある必要があります。