すべて、タイトルが尋ねるように、__get__
実行時に記述子のメソッドを変更することは可能ですか。私は、実行時にオンザフライで装飾されたり装飾されていない機能を持っている状況にあります。この関数の結果を属性として利用できるようにしたいと考えて@property
います。私はそれを調査し、記述子であることがわかりましたが、記述子の__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()
上記のコードは、大まかに言って、私が望むことを行います
- 値はコンストラクターで設定されます
get_x
メソッドを思う存分飾れるinstance.x
正しい値を返します
私の問題は、get_x
基本的に不要なので、メソッドを作成する必要がないことです。__get__
x のメソッドは読み取り専用である ため、修飾できませんでした。
バックグラウンド
私はターン ベースの戦略ゲームを書いており、デコレータを使用して永続的な条件を実装しています。テストケースを使用すると、これらのデコレータを効果的に実装できますが、計算された値を取得するには、属性アクセスではなく関数呼び出しを使用する必要があるという問題があります。ユニットを説明する値を取得すると、一貫性のない関数または属性が使用されるため、これは悪い考えのように思えます。可能であれば、属性を標準化したいです。