Pythonのプロパティ関数とは?
Pythonのプロパティ関数は、ゲッター(getter)とセッター(setter)を使用して、クラスのインスタンス変数に対するアクセスを制御するための機能です。
これにより、オブジェクト指向プログラミングの主要な原則であるカプセル化(データ隠蔽)が可能になります。
それでは、プロパティ関数を実際に使ってみましょう。
サルモリ
なるほど、カプセル化って重要なんだね。早速使ってみよう!
step
1
PythonのLambdaについて徹底的に学びたい方は画像をクリックしてご覧ください!
KindleUnlimited会員であれば、全ての本をご覧頂けます。 リストとラムダ式を理解すれば、Pythonプログラミングの世界が変わる 第1版
KindleUnlimited会員であれば、全ての本をご覧頂けます。 リストとラムダ式を理解すれば、Pythonプログラミングの世界が変わる 第1版
基本的な使い方
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class Person: def __init__(self): self._age = None @property def age(self): return self._age @age.setter def age(self, value): if value < 0: raise ValueError("Age cannot be negative!") self._age = value |
出力結果
サルモリ
ここでは、プライベート変数「_age」の値をゲット・セットするためのプロパティを定義してるんだね!
step
2
プロパティ関数を利用する
ソースコード例
1 2 3 |
p = Person() p.age = 20 print(p.age) |
出力結果
20
サルモリ
ここでは、Personクラスのインスタンス「p」を作成して、「age」プロパティに値を設定して、その値を取得しているんだね!
step
3
エラーをスローする
ここでは、年齢が負の値である場合にエラーをスローするようにプロパティを設定します。
このような機能は、クラスの内部状態を保護し、無効な操作を防止するために非常に重要です。
サルモリ
無効な操作は絶対に避けたいよね。エラーチェックができるなんて、プロパティ便利だな!
ソースコード例
1 2 3 4 |
try: p.age = -1 except ValueError as e: print(e) |
出力結果
Age cannot be negative!
サルモリ
年齢を-1に設定しようとしたら、ちゃんとエラーが出たね!これなら間違った操作を防ぐことができるね!
step
4
読み取り専用のプロパティ
セッターを定義せずに、プロパティを読み取り専用にすることも可能です。
これにより、ある値が設定後に変更されないように保証することができます。
サルモリ
読み取り専用のプロパティも作れるんだ!これなら変更を防ぐことができるね!
ソースコード例
1 2 3 4 5 6 7 |
class Person: def __init__(self, age): self._age = age @property def age(self): return self._age |
出力結果
サルモリ
このクラスでは、年齢は設定後に変更できないんだね!これなら安心して使えるね!
まとめ
Pythonのプロパティ関数は、クラスのインスタンス変数に対するアクセスをより厳密に制御するための有用なツールです。
これにより、データの整合性を保つことができ、エラーや無効な操作を防止することができます。
今回の記事では、Pythonのproperty関数の基本的な使い方について学びました。
この知識を利用することで、Pythonでのクラス設計がより効果的になるでしょう。
サルモリ
プロパティの使い方が分かったよ!これならクラスをもっと便利に使うことができるね!
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!
サルモリ
最後まで読んでくれてありがとう!!