propertyの作成

Pythonのクラスでは属性に直接読み書きができる。

class MyClass(object):
    def __init__(self):
        self.myattr = 1

my = MyClass()
print(my.myattr)      #  1

@propertyデコレータで、読み取り専用のプロパティが作成できる。

class MyClass(object):
    def __init__(self):
        self.myattr = 1
    @property
    def en_myattr(self):
        return ['zero', 'one', 
                'two', 'three'][self.myattr]

my = MyClass()
my.en_myattr    # 'one'
my.myattr=5
my.en_myattr   #'five'

@property名.setterで書き込み可能なプロパティが作成できる。

class MyClass(object):
    def __init__(self):
        self.myattr = 1
    @property
    def en_myattr(self):
        return ['zero', 'one',
                'two', 'three'][self.myattr]

    @en_myattr.setter
    def en_myattr(self, val):
        self.myattr = ['zero', 'one',
                        'two', 'three'].index(val)

my = MyClass()
print(my.en_myattr)     # one

my.en_myattr = 'two'
print(my.en_myattr)     # two
print(my.myattr)        # 2
関連記事:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)