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}

原文地址:https://www.cnblogs.com/python1988/p/11616213.html

时间: 2024-08-30 10:05:04

2019年10月1日 实现延迟计算功能的相关文章

等Excel工作簿关闭后自动加密压缩备份2019年10月9日.ahk

;; 等Excel工作簿关闭后自动加密压缩备份2019年10月9日.ahk;; 腾讯QQ号 595076941; 作者:徐晓亮(weiyunwps618); 写作日期:2019年5月15日; 版本号:第1版; 手机号(中国移动) 138#####488;; 用法:;; 1.在Windows 7 专业版中安装WinRAR 5.7 简体中文版和WPS Office 2016 专业增强版.; 2.在此脚本所在的文件夹新建一个与此脚本同名的Excel工作簿文件(*.xlsx).; 3.运行此脚本.; 4

【Lazy资产管理系统v1.0】2019年10月19日发布测试版

Lazy资产管理系统,是一款简洁而高效的资产管理系统,包括[资产明细查询].[资产新增管理].[资产变动管理].[资产借用管理].[资产处置管理].[我的资产变动记录].[我的资产借用记录]等功能. 为了解决广大企业管理者资产管理的难题,作者将此项目免费发布出来,供大家使用与交流,欢迎大家加入Lazy资产管理系统QQ交流群:×××,作者愿意和一起做好做强这款简洁而高效的资产管理系统. Lazy资产管理系统,将于2019年10月19日发布测试版本,欢迎大家下载测试,以便我们提供更好的免费版本给大家

2019年10月21日课堂测试

一.题目 石家庄铁道大学2019年秋季   2018 级课堂测试试卷(六)(10分) 课程名称: JAVA语言程序设计  任课教师:王建民        考试时间: 150 分钟 一.   考试要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母.数字组成.(1分) 3性别:要求用单选框或下拉框实现,选项只有“男”或“女”:(1分) 4学号:要求八位数字组成,前四位为“2018”开头,输入自

String,Random,Math 等一些Object对象(2019年10月22日)

String: 在java的底层中,String使用final char[ ]来存放字符串的,final决定了字符串是不可以被更改的,只能重新赋值 而在字符串中还有两个可以更改内容的方法:1.StringBuffer  2.StringBuilder  (字符串内容可以变.java.lang) 当我们需要频繁的变更字符串的内容使用.不能像String一样通过=来赋值,必须要通过构造方法. StringBuffer sb=new StringBuffer("一个StringBuffer...&qu

(面试题)ArrayList,HashSet以及HashMap(2019年10月23日)

1.看如下代码会输出什么 Integer i1 = 120 ; Integer i2 = 120 ; Integer i3 = new Integer(120); Integer i4 = new Integer(120); 答: Integer 在类加载的时候会先在静态区中初始化好-128 127 之间的数值,如果在这个范围则直接重复使用,否则在堆中new一个Integer 120:true 由于10在范围内,所以使用共用静态区中的Integer 1000:false 由于1000在范围外,所

ArrayList,HashSet以及HashMap(2019年10月23日)

包装类:对基本数据类型的包装,包装成引用数据类型(byte short int long float double boolean char) 基本数据类型对应的引用数据类型为:Byte Short Int Long Float Double Boolean  character 七种包装类(Character除外)都有接收字符串类型的构造方法 Boolean字符串参数 如果不是true,那么全是false 但是现在的jdk都有了自动装箱和自动拆箱的功能 集合:主要学习 ArrayList ,H

2019年10月2日 property补充

描述符:是很多高级库和框架的重要工具之一,描述符通常是使用到装饰器或者元类的大型框架中的一个组件.\ # class ClassMethod: # def __init__(self,func): # self.func=func # # def __get__(self, instance, owner): #类来调用,instance为None,owner为类本身,实例来调用,instance为实例,owner为类本身, # def feedback(): # print('在这里可以加功能

2019年10月13日 linux习题 wangqingchao

1. GUN的含义是: GNU's Not UNIX . 2. Linux一般有3个主要部分:内核.命令解释层.实用工具. 3.POSIX是可携式操作系统接口的缩写,重点在规范核心与应用程序之间的接口,这是由美国电气与电子工程师学会(IEEE)发布的一项标准. 4.当前Linux常见的应用可分为命令行与图形化两个方面. 5.Linux的版本分为商业公司维护的发行版本和社区组织维护的发行版本两种. 6.安装Linux最少需要两个分区,分别是swap交换分区和 /分区(根分区). 7. Linux默

2019年10月13日 spss习题 wangqingchao

1.spss发行版本的说法,正确的是:B a.两年发行一个新版本    b.一年发行一个新版本 c.没有任何规律   d.三年发行一个新版本 2.哪些是spss统计分析软件的基本窗口:A a.结果查看器窗口  b.枢轴表窗口 c.决策树视图窗口  d.箱图编辑窗口 3.spss帮助系统可以提供:D a.算法指导  b.语法命令参考 c.根据统计分析主题组织的帮助系统  d.以上都是 4.下列哪些模块是spss 18.0的新增模块:D a.回归分析模块  b.自抽样模块  c.神经网络模块d.市场