class Books():
def __init__(self):
self.__dict__['referTable'] = 1
@property
def referTable(self):
return 2
book = Books()
print(book.referTable)
print(book.__dict__['referTable'])
実行:property()
機能は、データ記述子として実装されているプロパティの非データバージョンを組み込んでいますか?
:
[email protected]:~/Desktop$ python3 test.py 2 1
Books.referTable
being a data descriptorはbook.__dict__['referTable']
の陰にされていません。 したがって、インスタンスはプロパティの動作をオーバーライドできません。
property
の内蔵ディスクリプタではなく、私自身のディスクリプタを使用する必要があります。 property
のような組み込みの記述子がありますが、それは非データですか?
ここで何をしようとしていますか?関数で '' @ property''を使う方法を変えることで達成できないことを達成しようとしていますか? –
@Lattyware、私は怠惰な記述子を作ろうとしています。時々私は '__init__'で' referTable'を設定したいと思っています。他の場合には、ディスクリプタに値を計算させ、 '__init__'で行ったのと同じ方法でディスクリプタをオーバーライドします。ここでは(http://blog.pythonisito.com/2008/08/lazy-descriptors.html)それは私にとってはうまくいく、それのための別の記述子になっています。私の場合は、可能であれば組み込み記述子を使用して単純化し、 'property'が私のためには機能しません。 – warvariuc
「簡略化」ですか?あなたは単純化したいものを明確にすることができますか?なぜリンクしている例があなたのために働かないのですか? –