Python 入門コース / 第6章 オブジェクト指向(第40〜46回) / レッスン 45
プロパティとカプセル化
なぜ直接触らせないのか
product.stock = -5 のような代入を許すと、ありえない状態がいつでも作れてしまいます。外から触ってほしくないものには _ を 1 つ付けるのが Python の慣習です(強制はされない、いわゆる紳士協定)。__ を 2 つ付けると名前が内部的に変換され、外から見えにくくなります(名前マングリング)。
editor.py
@property でメソッドを属性のように使う
@property を付けたメソッドは、カッコなしで属性のように読めます。さらに @名前.setter を定義すると、代入のタイミングで検査を挟めます。呼び出し側の書き方は変えずに、安全性だけを足せるのが利点です。
editor.py
設計の順番としては、まず普通の属性で書き、検査や計算が必要になった時点で property に変えるのが正解です。最初から全部を getter / setter で覆う書き方(他の言語の流儀)は、Python では冗長とされています。
✅ 理解度チェック
@property を付けたメソッドの呼び出し方は?