これは重複としてマークされると確信していますが、私が見ているものを本当に理解していません. Descriptors に関する Python のドキュメントを確認しましたが、Python で「プログラミング」を始めて 2 週間が経ちましたが、何を探しているのかよくわかりません。
これは私が得たものです:
>>> class Blub(object):
... def __init__(self, value):
... print('Blub is ' + value)
... self.value = value
... def __get__(self):
... print('Blub gets ' + self.value)
... return self.value
... def __set__(self, value):
... print('Blub becomes ' + value)
... self.value = value
...
>>> class Quish(object):
... def __init__(self, value):
... self.blub = Blub(value)
... def __get__(self):
... return self.blub
... def __set__(self, value):
... self.blub = Blub(value)
...
以下は、私が起こりたいことであり、どうすればよいかわかりません。
>>> a = Quish('One')
Blub is One
>>> a.blub
Blub gets One
'One'
a.blub = 'Two'
Blub becomes Two
これを実現するには、Bub または Quish で何をすればよいでしょうか。ここには非常に単純なクラスがありますが、次のように入力した場合にのみ完全に機能する、より複雑なバージョンがあります。
>>> a.blub.__get__()
これらの記述子のポイントは、実際にget () とset () を記述する必要がないようにすることだと思いました。私が望むように動作させるにはどうすればよいですか、またはPythonでそれを行うことはできませんか?