property属性的定义和调用要注意一下几点:
定义时,在实例方法的基础上添加 @property 装饰器;并且仅有一个self参数
调用时,无需括号
方法:foo_obj.func()
property属性:foo_obj.prop
Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回。
property属性的两种方法
3.1装饰器方法
经典类中的属性只有一种访问方式,其对应被@property装饰的方法
新式类中的属性有三种访问方法,并分别对应了三个被@property、@方法名.setter、@方法名.deleter
3.2类属性方式
创建值为property对象的类属性
property方法中有个四个参数
- 第一个参数是方法名,调用 对象.属性时自动触发执行方法
- 第二个参数是方法名,调用 对象.属性= XXX 时自动触发执行方法
- 第三个参数是方法名,调用 del对象.属性 时自动触发执行方法
- 第四个参数是字符串,调用 对象.属性.doc,此参数是该属性的描述信息
class Foo(object):
def get_bar(self):
print("getter...")
return 'laowang'
def set_bar(self, value):
"""必须两个参数"""
print("setter...")
return 'set value' + value
def del_bar(self):
print("deleter...")
return 'laowang'
BAR = property(get_bar, set_bar, del_bar, "description...")
obj = Foo()
obj.BAR # 自动调用第一个参数中定义的方法:get_bar
obj.BAR = "alex" # 自动调用第二个参数中定义的方法:set_bar方法,并将“alex”当作参数传入
desc = Foo.BAR.__doc__ # 自动获取第四个参数中设置的值:description...
print(desc)
del obj.BAR