2019年10月1日 实现延迟计算功能

Posted python1988

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019年10月1日 实现延迟计算功能相关的知识,希望对你有一定的参考价值。

class Lazyproperty:
    def __init__(self,func):
        print(>>>>>,func)
        self.func=func
    def __get__(self, instance, owner):#self 是Lazyproperty()生成的对象
        print(get方法)
        if instance is None:
            return self #如果instance 是None,就返回Lazyproperty(area)也就是self
        res=self.func(instance)#instance含义是传递的实例本身,owner是产生instance的类
        setattr(instance,self.func.__name__,res) #将res结果放入instance实例字典中,实现延迟计算,而且不能有set,不然会成为数据描述符,优先级高于实例属性
        return res




class Room:
    #描述符在被修饰的类中去定义
    # area=Lazyproperty(area)#描述符操作,但是下面的@lazyproperty 就是在做相同的事情
    def __init__(self,name,width,length):
        self.name=name
        self.width=width
        self.length=length

    
    @Lazyproperty
    def area(self):
        return self.width*self.length


r1=Room(cs,12,34)
print(r1.area)
print(r1.__dict__)

》》》》》

get方法
408
‘name‘: ‘cs‘, ‘width‘: 12, ‘length‘: 34, ‘area‘: 408

以上是关于2019年10月1日 实现延迟计算功能的主要内容,如果未能解决你的问题,请参考以下文章

1966年1月26日出生到60岁退休是哪年哪月哪日?

易初大数据——2019年10月16日 王庆超 计算机英语

2019年10月23日 计算机专业英语 运飞龙

2019年 10月27日 杨爱桁 计算机专业英语

运飞龙 2019年10月27日 计算机专业英语

1971年3月1日,哪年是55周岁?