10.2.4プロパティ

構文 property関数
property(fget[, fset[, fdel[, doc]]])
fget:ゲッター
fset:セッター
fdel:del演算子によって呼び出されるメソッド
doc:docstringを表す文字列

name = property(get_name)

プロパティを設定するには、ゲッター/セッターから「get_」「set_」を取り除き、代わりに

・ゲッターには @propertyデコレーター
・セッターには  @<名前>.setterデコレーター

プロパティ(property)とは、オブジェクト指向プログラミングにおいて、オブジェクトの属性(attribute)へのアクセスを制御するための機能です。Pythonにおけるプロパティは、特殊なデコレータとして使われ、属性への直接的なアクセスをメソッドを通じた間接的なアクセスに変更します。

Pythonのプロパティは、主に以下の3種類のメソッドとして使用されます:

  1. 1.getterメソッド:これは属性の値を取得するためのメソッドで、属性を読み取るときに自動的に呼び出されます。Pythonでは、@propertyデコレータを使って定義します。


  2. 2.setterメソッド
    :これは属性の値を設定するためのメソッドで、属性に値を代入するときに自動的に呼び出されます。Pythonでは、@<attribute>.setterデコレータを使って定義します。


  3. 3.deleterメソッド
    :これは属性を削除するためのメソッドで、delステートメントを使用して属性を削除するときに自動的に呼び出されます。Pythonでは、@<attribute>.deleterデコレータを使って定義します。

これらのメソッドを使用することで、属性へのアクセスをより厳密に制御し、情報をカプセル化することが可能になります。以下にPythonにおけるプロパティの一例を示します:

python
class Circle: def __init__(self, radius): self._radius = radius @property def radius(self): """Getter for radius""" return self._radius @radius.setter def radius(self, value): """Setter for radius""" if value >= 0: self._radius = value else: raise ValueError("Radius cannot be negative") @radius.deleter def radius(self): """Deleter for radius""" del self._radius

この例では、radiusCircleクラスのプロパティとして定義されており、それぞれのgetter、setter、deleterメソッドを通じてアクセスします。これにより、radiusの値が負にならないように制御する等の、特定の制約を実施することが可能になります。