一、python私有属性
例如,其中__name,__age为私有属性(一般实际使用时,不用双下划线,用单下划线隐喻为私有属性),类外访问会报错
class Person(object):
def __init__(self, name, age):
self.__name = name
self.__age = age
二、私有属性如何访问和修改
1、通过@property访问属性,通过@setter修改属性
其中setter与property定义的方法名要一致
class Person(object):
def __init__(self, name, age):
self._name = name
self._age = age
# 访问器 - getter方法
@property
def age(self):
return self._age
# 修改器 - setter方法
# 与property定义的方法名要一致
@age.setter
def age(self, age):
self._age = age
def play(self):
if self._age <= 16:
print('%s正在玩飞行棋.' % self._name)
else:
print('%s正在玩斗地主.' % self._name)
2、使用装饰器后,如何访问和修改属性
访问:用@property装饰后,方法可以像属性一样访问,例如person.age
修改:用@setter装饰后,方法可以像属性一样访问修改,例如person.age = 32
def main():
person = Person('王大锤', 12)
person.play()
person.age = 32 # setter的调用方法,直接更改属性
print(person.age) # 加了@property后,可以用调用属性的形式来调用方法,后面不需要加()
person.play()
if __name__ == '__main__':
main()