若是想访问属性能够经过属性的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相似的是保护属性,连子类都不能继承继承