デコレータ @property

@propertyデコレータは、Pythonのプロパティ(property)を定義するために使用されるデコレータの一つです。プロパティは、クラスの属性にアクセスするためのゲッター(getter)メソッドを提供し、属性の値を取得する際に、通常のメソッドのように呼び出すことができます。これにより、属性へのアクセスを制御し、属性の値を外部から読み取り可能にすることができます。

@propertyデコレータを使用してプロパティを定義するには、プロパティの名前と、それに対応するゲッターメソッドをクラス内で定義します。以下は、@propertyデコレータの使用例です:

python
class MyClass: def __init__(self, value): self._value = value # プライベート属性 @property def value(self): """value属性のゲッターメソッド""" print("value属性のゲッターが呼ばれました.") return self._value @value.setter def value(self, new_value): """value属性のセッターメソッド""" print("value属性のセッターが呼ばれました.") self._value = new_value @value.deleter def value(self): """value属性のデリータメソッド""" print("value属性のデリータが呼ばれました.") del self._value # プロパティを使って属性にアクセス obj = MyClass(42) print(obj.value) # value属性のゲッターが呼ばれました. 42 # プロパティを使って属性を設定 obj.value = 100 # value属性のセッターが呼ばれました. # プロパティを使って属性を削除 del obj.value # value属性のデリータが呼ばれました.

上記の例では、@propertyデコレータを使用して value プロパティを定義し、それに対応するゲッター、セッター、デリータメソッドを提供しています。プロパティを使用することで、obj.value のように属性にアクセスでき、ゲッター、セッター、デリータが適切に呼び出されます。

プロパティを使うことで、属性のアクセスや変更に関連するカスタムロジックを組み込むことができます。これにより、クラスの属性を制御し、外部コードとのインタフェースを改善するのに役立ちます。