Python 入門コース / 第6章 オブジェクト指向(第40〜46回) / レッスン 45

プロパティとカプセル化

なぜ直接触らせないのか

product.stock = -5 のような代入を許すと、ありえない状態がいつでも作れてしまいます。外から触ってほしくないものには _ を 1 つ付けるのが Python の慣習です(強制はされない、いわゆる紳士協定)。__ を 2 つ付けると名前が内部的に変換され、外から見えにくくなります(名前マングリング)。

editor.py

@property でメソッドを属性のように使う

@property を付けたメソッドは、カッコなしで属性のように読めます。さらに @名前.setter を定義すると、代入のタイミングで検査を挟めます。呼び出し側の書き方は変えずに、安全性だけを足せるのが利点です。

editor.py

設計の順番としては、まず普通の属性で書き、検査や計算が必要になった時点で property に変えるのが正解です。最初から全部を getter / setter で覆う書き方(他の言語の流儀)は、Python では冗長とされています。

✅ 理解度チェック

@property を付けたメソッドの呼び出し方は?