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(‘在这里可以加功能啊...‘)
#             return self.func(owner)
#         return feedback
#
# class People:
#     name=‘sss‘
#     @ClassMethod # say_hi=ClassMethod(say_hi)
#     def say_hi(cls):
#         print(‘你好啊,帅哥 %s‘ %cls.name)
#
# People.say_hi()
#
# p1=People()
# p1.say_hi()
# #疑问,类方法如果有参数呢,好说,好说

class ClassMethod:
    def __init__(self,func):
        self.func=func

    def __get__(self, instance, owner): #类来调用,instance为None,owner为类本身,实例来调用,instance为实例,owner为类本身,
        def feedback(*args,**kwargs):
            print(‘在这里可以加功能啊...‘)
            return self.func(owner,*args,**kwargs)
        return feedback

class People:
    name=‘wwwww‘
    @ClassMethod # say_hi=ClassMethod(say_hi)
    def say_hi(cls,msg):
        print(‘你好啊,帅哥 %s %s‘ %(cls.name,msg))

People.say_hi(‘你是那偷心的贼‘)
#
p1=People()
p1.say_hi(‘你是那偷心的贼‘)

>>>>>

在这里可以加功能啊...
你好啊,帅哥 wwwww 你是那偷心的贼
在这里可以加功能啊...
你好啊,帅哥 wwwww 你是那偷心的贼

property 补充方法1:

class Foo:
    @property
    def AAA(self):
        print(‘get的时候运行‘)

    @AAA.setter  #如果没有这一行就不能设值,如果对AAA设值则会触发该方法
    def AAA(self,value):
        print(‘set的时候运行‘,value)

    @AAA.deleter
    def AAA(self):
        print(‘delete的时候运行‘)

#只有在属性AAA定义property后才能定义AAA.setter,AAA.deleter
f1=Foo()
f1.AAA=‘sss‘ #注意上面用法,重新又定义了一次AAA函数
del f1.AAA

方法2:

利用property内置函数的方式

class Foo:
    def get_AAA(self):
        print(‘get_AAA ‘)

    def set_AAA(self,val):
        print(‘set_AAA‘,val)

    def delete_AAA(self):
        print(‘delete‘)

    AAA=property(get_AAA,set_AAA,delete_AAA) #注意顺序不能乱,是强制的,取值》设值》删除   

f1=Foo()
f1.AAA=‘sxs‘

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

时间: 2024-08-23 16:04:05

2019年10月2日 property补充的相关文章

等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

2018年10月19日 新补充 JSSSS

var a="hello world" a这个变量是字符串了 对于里面每一个字母来说 他是字节 里面有11个字节 字节总数用length表示 如下: 根据上面的内容咱们又发现了一个运算方法"."(符号运算) 符号运算 "+"号表示拼接 "."表示"的"(在上面这条语句里表示a"的"length) 对于点运算 点前面的叫对象   点后面的叫属性和方法 属性和方法的区别 a.length 

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

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默