プロパティデコレータ
CoddyのPythonジャーニー「Object Oriented Programming」セクションの一部 — レッスン 10/64。
@property デコレータを使用すると、メソッドに属性のようにアクセスできるようになり、値の取得や設定を簡潔に行う方法が提供されます。
@property を使用したクラスの例を次に示します:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@property
def area(self):
return 3.14159 * self._radius ** 2円を作成し、プロパティにアクセスします:
my_circle = Circle(5)通常の属性のようにプロパティにアクセスします:
print(my_circle.radius)
print(my_circle.area)出力:
5
78.53975プロパティにアクセスする際、括弧 () を使用しないことに注意してください。これらは属性のように見えますが、メソッドのコードを実行します。
値を変更できるようにセッターを追加します:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@radius.setter
def radius(self, value):
if value > 0:
self._radius = value
else:
print("Radius must be positive!")これで、属性のように半径を設定できるようになります:
my_circle = Circle(5)
my_circle.radius = 10 # セッターを使用します
print(my_circle.radius) # ゲッターを使用します出力:
10重要なポイント: @property はメソッドを属性のように見せ、@property_name.setter は値がどのように代入されるかを制御できるようにします。
チートシート
@property デコレータを使用すると、メソッドに属性のようにアクセスできるようになり、値の取得や設定を簡潔に行うことができます。
プロパティの基本的な使い方:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@property
def area(self):
return 3.14159 * self._radius ** 2括弧なしでプロパティにアクセスします:
my_circle = Circle(5)
print(my_circle.radius) # 5
print(my_circle.area) # 78.53975値の代入を制御するためにセッターを追加します:
@radius.setter
def radius(self, value):
if value > 0:
self._radius = value
else:
print("Radius must be positive!")属性のように値を設定します:
my_circle.radius = 10 # セッターを使用します
print(my_circle.radius) # ゲッターを使用します自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。