property属性

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

猜你喜欢

转载自blog.csdn.net/s201314yh/article/details/80034679