なんだかGoodVibes

日々の勉強メモです。

【Python】プロパティの定義

こんにちは。
本日はPythonメモです。

本記事では、Pythonのプロパティの使用について記載します。

ゲッターメソッド、セッターメソッドの定義

ゲッターメソッド、セッターメソッドを定義し、
property()を使用して2つのメソッドを定義します。

property()の第一引数にゲッターメソッド、
第二引数にセッターメソッドを定義します。

class MyItem():
    def __init__(self, n):
        self.__name = n

    def get_name(self):
        print('[do get_name]')
        return self.__name

    def set_name(self, n):
        self.__name = n
        print('[do set_name] ' + self.__name)

    name = property(get_name, set_name)

m = MyItem('Bob')
print(m.name)

m.name = 'Bob2'

実行結果は以下です。

[do get_name]
Bob
[do set_name] Bob2

nameプロパティを参照していますが、
実際には、get_name、set_nameメソッドが呼び出されています。


デコレータを使用した定義

デコレータを使用して、プロパティを定義することもできます。

ゲッターメソッドには@propertyを指定し、
セッターメソッドには@プロパティ名.setterを指定します。

class MyItem():
    def __init__(self, n):
        self.__name = n

    @property
    def name(self):
        print('[getter]')
        return self.__name

    @name.setter
    def name(self, n):
        self.__name = n
        print('[setter] ' + self.__name)

m = MyItem('Bob')
print(m.name)

m.name = 'Bob2'

実行結果は以下です。

[getter]
Bob
[setter] Bob2



以上です。