web-dev-qa-db-ja.com

pythonプロパティデコレータ

重複の可能性:
Pythonでプロパティ機能を使用する方法に関する実際の例?

次のコードで見たデコレータ_@property_について質問があります。誰かが_@property_デコレータを使用する理由を完全に説明できるほど親切でしょうか? _@property_はisActive = property(isActive)と同等ですが、メソッドプロパティは実際にそのパラメータに対して何をしますか? isActiveクラスからInputCellメソッドを呼び出すとしたら、実際にはどうなるでしょうか。前もって感謝します。

_class InputCell(object):
    def __init__(self, ix, iy, inputData):
        self.ix = ix
        self.iy = iy
        self.InputData = inputData

    @property
    def isActive(self):
        return self.InputData[self.ix][self.iy]
_
18
Q Zhao-Liu

それは単に構文糖衣です。これにより、メソッド呼び出しを変数アクセスまたは割り当てのように見せることができます。

これが役立つ1つの方法は、以前は以前だったものを、他のコードで実際に計算または検証されたものに変更する場合です。これをプロパティにすると、既存のコードを壊すことなくこれを行うことができます。もう1つの方法は、オブジェクト属性のキャッシュ、遅延初期化などです。

24
Taymon