描述符__get__(),__set__(),__delete__()(三十七)

http://www.cnblogs.com/linhaifeng/articles/6204014.html#_label12

描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协议
__get__():调用一个属性时,触发
__set__():为一个属性赋值时,触发
__delete__():采用del删除属性时,触发

定义一个描述符

描述符是干什么的:描述符的作用是用来代理另外一个类的属性的(必须把描述符定义成这个类的类属性,不能定义到构造函数中)

描述符分两种
一 数据描述符:至少实现了__get__()和__set__()

 class Foo:
     def __set__(self, instance, value):
         print(‘set‘)
     def __get__(self, instance, owner):
         print(‘get‘)

非数据描述符:没有实现__set__()

class Foo:
     def __get__(self, instance, owner):
         print(‘get‘)

原文地址:https://www.cnblogs.com/xiangtingshen/p/10463924.html

时间: 2024-10-08 17:30:48

描述符__get__(),__set__(),__delete__()(三十七)的相关文章

十八.描述符(__get__,__set__,__delete__)

描述符(__get__,__set__,__delete__) 4 注意事项: 一 描述符本身应该定义成新式类,被代理的类也应该是新式类 二 必须把描述符定义成这个类的类属性,不能为定义到构造函数中 三 要严格遵循该优先级,优先级由高到底分别是 1.类属性 2.数据描述符 3.实例属性 4.非数据描述符 5.找不到的属性触发__getattr__() 1 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这

Python进阶-----描述符(__get__(),__set__(),__delete__())

一.描述符是什么 描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协议 __get__():调用一个属性时,触发 __set__():为一个属性赋值时,触发 __delete__():采用del删除属性时,触发 1 class Foo: #在python3中Foo是新式类,它实现了三种方法,这个类就被称作一个描述符 2 def __get__(self, instance, owner): 3 prin

描述符(__get__,__set__,__delete__)

目录 描述符 描述符的作用 何时,何地,会触发这三个方法的执行 两种描述符 数据描述符 非数据描述符 描述符注意事项 使用描述符 牛刀小试 拔刀相助 磨刀霍霍 大刀阔斧 类的装饰器:无参 类的装饰器:有参 刀光剑影 描述符总结 自定制@property property回顾 自定制property 实现延迟计算功能 打破延迟计算 自定制@classmethod 自定制@staticmethod 描述符 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__se

Python之路(第二十七篇) 面向对象进阶:内置方法、描述符

一.__call__ 对象后面加括号,触发执行类下面的__call__方法. 创建对象时,对象 = 类名() :而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()() class Foo: ? def __call__(self, *args, **kwargs): print("我执行啦") ? f = Foo() f() #对象加括号调用执行类下的__call__方法 #输出结果 我执行啦 二.__next__和__iter__实现迭代器协议 迭

Python之路(十二):描述符,类装饰器,元类

python基础之面向对象(描述符.类装饰器及元类) 描述符 描述符(__get__,__set__,__delete__)   # 这里着重描述了python的底层实现原理 1. 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协议. __get__():调用一个属性时,触发 __set__():为一个属性赋值时,触发 __delete__():采用del删除属性时,触发 1 class

python 描述符 上下文管理协议 类装饰器 property metaclass

1.描述符 #!/usr/bin/python env # coding=utf-8 # 数据描述符__get__ __set__ __delete__ ''' 描述符总结 描述符是可以实现大部分python类特性中的底层魔法,包括@classmethod,@staticmethd,@property甚至是__slots__属性 描述符是很多高级库和框架的重要工具之一,描述符通常是使用到装饰器或者元类的大型框架中的一个组件 注意事项: 一 描述符本身应该定义成新式类,被代理的类也应该是新式类 二

描述符\get/set/delete,init/new/call,元类

6.23 自我总结 1.描述符__get__,__set__,__delete__ 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了____get__(),__set__(),__delete__()中的一个,这也被称为描述符协议 __get__():调用一个属性时,触发 __set__():为一个属性赋值时,触发 __delete__():采用del删除属性时,触发 这三者来对于类的属性生成一个类,然后对一个新类立面的特征进行调用方法 使用方法 class FooSet: d

描述符

描述符就是将某种特殊类型的类的实例指派给另一个类的属性. __get__(self, instance, owner) –用于访问属性,它返回属性的值 __set__(self, instance, value) –将在属性分配操作中调用,不返回任何内容 __delete__(self, instance) –控制删除操作,不返回任何内容 有时候,某个应用程序可能会有一个相当微妙的需求,需要你设计一些更为复杂的操作来响应 (例如,每当属性被访问时,你也许想创建一个日志记录).最好的解决方案就是编

Python笔记(4)类(上)属性与描述符

部分参考自:http://www.geekfan.net/7862/ 新式类与经典类 2和3不一样,3都是新式类. 新式类和经典类的区别: class A: #classic class """this is class A""" pass __slots__=('x','y') def test(self): # classic class test """this is A.test()""&