概述
一般 实例属性 定义成私有,然后通过 setter 方法设置值,getter 方法获取值
这种操作比较麻烦,在python中通过装饰器@property简化操作
注意顺序:
装饰器@property必须在@setter的上面
案例
#coding=utf-8
class Student:
#相当于get_name()方法
@property
def name(self):
print("执行get_name")
return self._name
#相当于set_name()方法
@name.setter
def name(self,name):
print("执行set_name")
self._name=name
#相当于get_age()方法
@property
def age(self):
print("执行get_age")
return self._age
#相当于set_age()方法
@age.setter
def age(self,age):
print("执行set_age")
self._age=age
调用
xiaoming=Student()
xiaoming.name="小明" #调用set_name()方法
xiaoming.age=19 #调用set_age()方法
print("xiaoming.name=%s"%xiaoming.name) #调用get_name()方法
print("xiaoming.age=%s"%xiaoming.age) #调用get_age()方法
只读属性
如果不定义@age.setter和方法,就表示age为只读属性
总结
装饰器
@property是简化属性操作,替代调用setter、getter方法的与
__setattr__、__getattribute__等自定义属性不同