クラスの中で
変数1 = property(クラスの中の関数1,クラスの中の関数2)
のように定義すると、インスタンスを作った後に
変数1
と書くだけで関数1を実行する。
さらに
変数1 = 〇〇
と書くだけで関数2の引数に〇〇を入れて実行したことになる。
通常は
関数1にクラスの中の変数を表示する処理を(getter)
関数2にクラスの中の変数に値を入れる処理を(setter)
書くので、これをやると変数の表示と変数の値セットを
まるで普通の変数を扱うかのようにできる。
class aClass():
def __init__(self,name):
self.name = name
def get_name(self):
print(self.name)
def set_name(self,name):
self.name = name
pro = property(get_name,set_name)
ob01 = aClass('Bob')
ob01.pro
ob01.pro = 'John'
ob01.pro
aClassというクラスを以下に定義
コンストラクタを定義(引数はname)
変数self.nameにname(引数のname)の値を入れる
get_nameという関数を定義
self.nameを出力
set_nameという関数を定義(引数はname)
変数self.nameにname(引数のname)の値を入れる
変数proにproperty(get_name,set_name)を入れる
ob01を引数BobとしてaClassのインスタンスとして定義
ob01.proを実行(ob01のget_nameを実行)
ob01.proにJohnという値を入れる(ob01のset_nameを引数Johnで実行)
ob01.proを実行(ob01のget_nameを実行)