一、_new_方法

创建实例时触发_new_方法

_new_方法会创建并返回实例

class Cls:instance = 0#cls 规范命名 ,表示一个类def __new__(cls, *args, **kwargs):if cls.instance == 0: #当标志值为0cls.instance = super().__new__(cls)#调用父类的_new_并传入本类#实例化,获取实例#将实例赋值给当前类的instance属性return cls.instance#返回当前类的instance属性def __init__(self):print("初始化")
c1 = Cls()
c2 = Cls()
# print(id(c1), id(c2))
# print(Cls.mro())

二、定制属性访问

class Cls:name = "我"def __setattr__(self, key, value):print("属性名:%s; 属性值:%s" % (key, value))def __delattr__(self, item):print("删除%s" % item)def __getattribute__(self, item):print("获取%s" % item)return "111"def __getattr__(self, item):print("%s不存在" % item)c = Cls()
# setattr(c, "name", "李坤")
# print(c.name)
# ss = getattr(c, "name")
# print(ss)
attr_bool = hasattr(c, "傻逼")
print(attr_bool)
# c.傻逼

三、描述符

#描述符
class A:def __get__(self, instance, owner):print("获取")def __set__(self, instance, value):print("修改")def __delete__(self, instance):print("删除")class B:ins = A()a = B()#当属性是一个实例的时候
#对这个属性 查 改 删
# print(a.ins)
a.ins = 23
# del a.ins

四、装饰器

#内置装饰器
class Cls:@propertydef test01(self):print("调用")return "属性形式调用"@staticmethoddef test02(name):print("不会自动传入self", name)@classmethoddef test03(cls):print("自动传入类")

#类装饰器
class Cls:def __init__(self, func):print("初始化装饰器")self.fun = funcdef __call__(self, *args, **kwargs):print("执行被装饰的函数")self.fun( *args, **kwargs)@Cls
def fun(name):print(name, "执行函数")aa = Cls("1111")fun("李坤")

转载于:https://www.cnblogs.com/likun-python-3/p/9463251.html

new方法、定制属性、描述符、装饰器相关推荐

  1. Python:高级主题之(属性取值和赋值过程、属性描述符、装饰器)

    属性取值和赋值过程 一切皆是对象,类型也是对象. 对象包含一个__class__属性指向其所属类型. 对象包含一个__dict__属性指向其所包含的成员(属性和方法). 取值过程(下面是伪代码) 1 ...

  2. 关于属性描述符PropertyDescriptor

    本文首发于本博客 猫叔的博客,转载请申明出处 前言 感谢GY丶L粉丝的提问:属性描述器PropertyDescriptor是干嘛用的? 本来我也没有仔细了解过描述符这一块的知识,不过粉丝问了,我就抽周 ...

  3. JavaScript 属性描述符

    前言   此文总结了属性描述符的作用和特性,以及限制对象操作的部分方法. Object.defineProperty   Object.defineProperty 用于指定对象属性的描述符.   函 ...

  4. JavaScript(3)之——对象的属性描述符

      对象的属性描述符是一个初学者容易忽略但是非常重要的特性,像是vue的数据双向绑定就是用它做文章.且关于它的方法和属性也很多,今天我来总结一下. 属性描述符概述   对象的每个属性都具备了属性描述符 ...

  5. javascript --- 属性描述符

    从ES5开始,所有的属性都具备了属性描述符 var myObject = {a: 2 };Object.getOwnPropertyDescriptor(myObject, "a" ...

  6. python 属性描述符_Python属性描述符(二)

    Python存取属性的方式特别不对等,通过实例读取属性时,通常返回的是实例中定义的属性,但如果实例未曾定义过该属性,就会获取类属性,而为实例的属性赋值时,通常会在实例中创建属性,而不会影响到类本身.这 ...

  7. python 属性描述符

    文章目录 1. 描述符示例:验证属性 2. 自动获取储存属性的名称 3. 继承改进 4. 覆盖型与非覆盖型描述符对比 4.1 覆盖型描述符 4.2 没有 `__get__` 方法的覆盖型描述符 4.3 ...

  8. 属性python_Python属性描述符(一)

    描述符是对多个属性运用相同存取逻辑的一种方式,,是实现了特性协议的类,这个协议包括了__get__.__set__和__delete__方法.property类实现了完整的描述符协议.通常,可以只实现 ...

  9. 假装Python高手,你真的懂属性描述符类!

    Python学了好几年,发现功力还是那样,很多同学经常这样抱怨!都说Python入门容易,精通难,确实是这样的,每当我们打开一些牛逼的源码框架,进去看窥探大牛的源码,比如Python里面非常著名的Dj ...

  10. java中的scr是什么意思,javascrpt中属性描述符的理解与使用

    javascrpt中属性描述符的理解与使用 属性描述符是ES5出现的概念.顾名思义:它用于描述对象里面的属性应该是什么样,例如是否只读,能否可枚举,能否可配置等.怎样?好理解吧. 既然是对象里面的属性 ...

最新文章

  1. 三星note5 android版本区别吗,三星Note5哪种颜色好看?三星Note5四种颜色区别对比图解...
  2. 使用runtime让button传递多个参数
  3. Selenium WebDriver- 操作 IFrame 中的页面元素
  4. 罗永浩直播间被问“这胖子是谁”,本人看到后崩溃
  5. Samba之打印机共享配置 (CUPS系统)
  6. libcurl学习及简易封装类
  7. python语言编程中的保留字_Python入门系列5-保留字和标识符
  8. java8以及常见编程技术Api中文版手册
  9. 校园二手交易平台设计总览
  10. 快的打车创始人带着区块链“杀”回来了,要与滴滴再次决一死战?
  11. 气相色XD谱灵敏度解析及载气不纯解决方案
  12. docker容器访问宿主机的mysql
  13. 使用Fastlane编写Android自动打包脚本
  14. EDA技术试验二:组合逻辑电路设计、仿真与实现实验
  15. python用函数对列表删除_关于python:如何使用range()函数从列表中删除项目时迭代列表?...
  16. 双三次插值算法的OpenGL实现
  17. paddle复现colorGAN(动漫黑白线条上色)
  18. 动易数据库conn.asp的问题
  19. 可能是目前为止全网最好的介绍分布式系统原理的中文文档!
  20. RX5700XT和RX6700XT的区别 RX 5700XT和RX 6700XT选哪个好

热门文章

  1. 苍蓝契约服务器维护,苍蓝誓约萌新玩家新手任务及刷初始方法
  2. 上传卡正在交付_建行实体卡、虚拟卡一起秒批,不面签不面取,有卡直提8w!...
  3. php$.ajax(),使用PHP的jQuery $.ajax()
  4. python下视频的包_这套Python视频超详细,包你一小时就可开始入门,100天在编程界驰骋~...
  5. 区块链 以太坊 智能合约 如何销毁 废弃 selfdestruct
  6. 域名访问html乱码,显示地址和域名解析时出现乱码
  7. linux创建表空间 没有权限,ORA-12913: 无法创建字典管理的表空间
  8. 计算机控制系统功能,计算机控制系统功能之操作指导-电脑自学网
  9. vue学习-处理边界-依赖注入
  10. String.format()方法使用