About @property包裝器 getter和setter方法

若是想訪問屬性能夠經過屬性的getter(訪問器)和setter(修改器)方法進行對應的操做python

 

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 修改器,可進行修改函數的定義,code

_name相似的是私有屬性,只有子類能夠繼承對象

__name相似的是保護屬性,連子類都不能繼承繼承

相關文章
相關標籤/搜索