すべて、 タイトルに尋ねると、実行時にDescriptorの__get__
メソッドを変更することは可能ですか?私は実行時にオンザフライで装飾され装飾されている機能を持っている状況にあります。私は@property
と同様に、この関数の結果を属性として利用できるようにしたいと思います。私はそれを研究し、それがディスクリプタであることを発見しましたが、ディスクリプタの__get__
メソッドは読み込み専用です。実行時にpythonディスクリプタの__get__メソッドを変更できますか?
class Test(object):
def __init__(self):
self._x = 10
def get_x(self):
return self._x
@property
def x(self):
return self.get_x()
上記のコードは、私が欲しいものを行い、おおよそ、その
- に値がコンストラクタ
- に設定されている私は私の心のコンテンツへ
instance.x
リターンをget_x
方法を飾ることができます正しい値
私の問題は、基本的には不要なので、get_x
メソッドを作成してください。私はちょうど読み取り専用であるので__get__
xのメソッドを飾ることができませんでした。
背景
私はターンベースの戦略ゲームを書いている、と私は永続的な条件を実装するためにデコレータを使用しています。私はテストケースを使用するときにこれらのデコレータを効果的に実装できますが、計算された値を取得するには、属性アクセスではなく関数呼び出しを使用する必要があります。ユニットを記述する値を取得すると関数や属性が一貫して使用されないため、これは悪い考えです。私はできるなら属性を標準化したいと思う。
おかげで、私はこの本の夕方に見ていきますが、それは私が欲しいものないように見えます。すべてがうまくいくなら、私は答えを受け入れるでしょう。 – mklauber