propertyを使ったgetter/setter
の書き方についてメモしておく。
propertyは、クラス外部からはインスタンス変数のように参照することのできる関数のこと。
基本的な書き方
propertyを使ったgetter/setter
の基本的な書き方は、以下のようになる。
# getterの書き方
@property
def 変数名(self):
return self.変数名
# setterの書き方
@変数名.setter
def 変数名(self, value):
self.変数名 = value
サンプル
簡単なgetter/setter
を使ったサンプルプログラム書いてみた。
getter
だけを記述して、値を変更されないようにしたり、下記のようにsetter
に値チェックなどを書くことができる。
また、Pythonでは__
(アンダースコア2つ)は言語仕様として、privateなメンバを意味する。
class Student:
def __init__(self, name, age):
self.__name = name
self.__age = age
@property
def name(self):
return self.__name
@property
def age(self):
return self.__age
@age.setter
def age(self, age):
if age < 0:
raise ValueError("年齢が不正です")
self.__age = age
student = Student("Ryota",18)
student.age = 20
print(student.name) # Ryota
print(student.age) # 20
# ageに不正な値を入れた場合
# student.age = -1
# ValueError: 年齢が不正です