1. 程式人生 > >About @property包裝器 getter和setter方法

About @property包裝器 getter和setter方法

如果想訪問屬性可以通過屬性的getter(訪問器)和setter(修改器)方法進行對應的操作

 

class Person(object):

    def __init__(self, name, age):
        self._name = name
        self._age = age

    # 訪問器 - getter方法
    @property
    def name(self):
        return self._name

    # 訪問器 - getter方法
    @property
    def age(self):
        return self._age

    # 修改器 - setter方法
    @age.setter       #如果把@age.setter註釋掉,那麼這個類例項化物件的age屬性將不能修改
    def age(self, age):
        self._age = age
#
    def play(self):
        if self._age <= 16:
            print('%s正在玩飛行棋.' % self._name)
        else:
            print('%s正在玩鬥地主.' % self._name)


def main():
    person = Person('王大錘', 12)
    person.play()
    person.age = 22
    person.play()
    # person.name = '白元芳'  # AttributeError: can't set attribute

@property裝飾器定義的函式才有修改的可能,可方便進行訪問屬性的函式定義。不然要去訪問person._name了

@function.setter 修改器,可進行修改函式的定義,函式可不進行