構文 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.getterメソッド:これは属性の値を取得するためのメソッドで、属性を読み取るときに自動的に呼び出されます。Pythonでは、
@propertyデコレータを使って定義します。
2.setterメソッド:これは属性の値を設定するためのメソッドで、属性に値を代入するときに自動的に呼び出されます。Pythonでは、@<attribute>.setterデコレータを使って定義します。
3.deleterメソッド:これは属性を削除するためのメソッドで、delステートメントを使用して属性を削除するときに自動的に呼び出されます。Pythonでは、@<attribute>.deleterデコレータを使って定義します。
これらのメソッドを使用することで、属性へのアクセスをより厳密に制御し、情報をカプセル化することが可能になります。以下にPythonにおけるプロパティの一例を示します:
pythonclass 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
この例では、radiusはCircleクラスのプロパティとして定義されており、それぞれのgetter、setter、deleterメソッドを通じてアクセスします。これにより、radiusの値が負にならないように制御する等の、特定の制約を実施することが可能になります。
コメント