若是想訪問屬性能夠經過屬性的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相似的是保護屬性,連子類都不能繼承繼承