Pythonプロパティは、クラス内のデータ検証をカプセル化するエレガントな方法を提供します。 属性に直接アクセスして変更する代わりに、属性として偽装したGetterおよびSetterメソッドを使用します。これにより、値を割り当てるか取得する前に検証チェックを実行できます。
例を示しましょう。 幅と高さが常に正の数であることを確認したいと考えています。 プロパティがなければ、各属性に個別のゲッターとセッターメソッドがあります。プロパティを使用すると、同じ結果をよりきれいに達成できます:Rectangle
class Rectangle: def __init__(self, width, height): self._width = width self._height = height @property def width(self): return self._width @width.setter def width(self, value): if value <= 0: raise ValueError("Width must be positive") self._width = value @property def height(self): return self._height @height.setter def height(self, value): if value <= 0: raise ValueError("Height must be positive") self._height = value def area(self): return self.width * self.height #Example usage rect = Rectangle(5, 10) print(rect.area()) # Output: 50 try: rect.width = -2 except ValueError as e: print(e) # Output: Width must be positive print(rect.width) #Output: 5
およびwidth
はプロパティです。 height
デコレーターはゲッターを定義し、@property
(および同様に@width.setter
に対して)セッターを定義します。 セッターメソッドは、新しい値を割り当てる前に検証チェックを実行します。 検証が失敗した場合、aheight
が上昇します。 このアプローチにより、検証ロジックはデータに密接に関連付けられ、コード組織が改善されます。ValueError
_width
およびwidth
メソッドを呼び出す代わりに、属性と直接対話しますが、舞台裏で検証がシームレスに行われます。 これにより、よりクリーンでより簡潔なコードが発生します。@property
Pythonプロパティを使用してデータ検証プロセスの効率を改善するにはどうすればよいですか?以上がデータ検証にPythonプロパティを使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。