クラスのインスタンスの値を入れたり表示するのを簡単にしたい


概要


クラスの中で

変数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を実行)

出力


Bob
John

説明



間違えやすい問題