19章動的属性とプロパティ
パブリックなデータ属性をクラスのパブリックインタフェースの一部として安全に公開できるようにし、しかもそうすることが推奨されることから、プロパティの存在はきわめて重要です。
——Alex MartelliPythonの開発者にして著述家『Python in a Nutshell』,p.101より[EN-02]
データ属性とメソッドは、Pythonでは属性(attribute)と総称されています。メソッドは単に呼び出し可能な属性にすぎません。データ属性とメソッドに加え、プロパティ(property)も作成できます。プロパティはクラスインタフェースを変更せずとも、パブリックなデータ属性をgetter/setterといったaccessorメソッドで置き換えることができます。これは、次に示す統一アクセス原理(Uniform Access Principle)を満たしています†1。
[†1] Meyer:『Object-Oriented Software Construction』,p.57より[EN-40]。
モジュールが提供するサービスは、実装がストレージを介していようと演算によるものであろうと変わることなく、すべて統一された表記を介して利用できるべきです。
プロパティの他にも、Pythonには属性へのアクセスを制御し、動的属性(dynamic attribute)を実装するAPIが豊富に用意されています。インタプリタは__getattr__や__setattr__などの特殊メソッドを呼び出すことで、ドット表記(obj.attrなど)を介した属性アクセスを評価します。__getattr__を実装するユーザ定義クラスは、obj.no_such_attribute ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access