Python对象自定制property

class lazyProperty:
    def __init__(self, func):
        self.func = func
    
    """
        利用描述符原理, 当调用area类属性,触发该函数,将instance作为self参数传入 func里面执行
    """
    def __get__(self, instance, owner):
        return self.func(instance)


class Foo:

    def __init__(self):
        self.x = 10
        self.y = 20
    """
        自定制的property 利用了描述符原理,
        当执行了@lazyProperty后,会在Foo类属性里面生成了一个 area= azyProperty(area) 类属性
    """
    @lazyProperty
    def area(self):
        return self.x * self.y


obj = Foo()
obj.area

 

posted @ 2020-12-19 16:21  leungqingyun  阅读(65)  评论(0)    收藏  举报