利用描述符自定制property

 1 class property2:
 2     def __init__(self, func):
 3         print(‘执行property2‘)
 4         self.func = func
 5
 6     def __get__(self, instance, owner):
 7         return self.func(instance)
 8
 9
10 class Room:
11     def __init__(self, name, width, length):
12         self.name = name
13         self.width = width
14         self.length = length
15
16     @property2   # area = property2(area)
17     def area(self):
18         return self.width * self.length
19
20
21 r1 = Room(‘cesuo‘, 100, 20)
22 print(r1.area)
23
24 输出:
25 执行property2
26 2000

巧妙的利用描述符的__get__方法去调用类方法

原文地址:https://www.cnblogs.com/ch2020/p/12503018.html

时间: 2024-11-09 06:05:20

利用描述符自定制property的相关文章

通过描述符自定制@property的功能

# 通过描述符自定制@property的功能 # 原始通过@property实现的功能:将类中定义的函数属性,通过装饰器@property将其封闭成数据属性 class Room: def __init__(self, name, width, length): self.name = name self.width = width self.length = length @property def area(self): return self.width * self.length r1

课时46:魔法方法:描述符(property的原理)

目录: 一.描述符(property的原理) 二.课时46课后习题及答案 ********************************** 一.描述符(property的原理) ********************************** 本节要讲的内容叫作描述符,用一句话解释,描述符就是将某种特殊类型的类的实例指派给另一个类的属性.那什么是特殊类型的类呢?就是至少要在这个类里边定义__get__().__set__()或__delete__()三个特殊方法中的任意一个. 下表列举了

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

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

描述符(__get__,__set__,__delete__)

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

描述符(\_\_get\_\_和\_\_set\_\_和\_\_delete\_\_)

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

转载python描述符介绍

来源:http://www.ibm.com/developerworks/cn/opensource/os-pythondescriptors/ 简介 Python 2.2 引进了 Python 描述符,同时还引进了一些新的样式类,但是它们并没有得到广泛使用.Python 描述符是一种创建托管属性的方法.除了其他优点外,托管属性还用于保护属性不受修改,或自动更新某个依赖属性的值. 描述符增加了对 Python 的理解,改善了编码技能.本文介绍了描述符协议,并演示了如何创建和使用描述符. 描述符协

描述符简介

请给作者点赞-->原文链接 简介 Python 描述符是一种创建托管属性的方法.除了其他优点外,托管属性还用于保护属性不受修改,或自动更新某个依赖属性的值. 描述符增加了对 Python 的理解,改善了编码技能.本文介绍了描述符协议,并演示了如何创建和使用描述符. 描述符协议 Python 描述符协议 只是一种在模型中引用属性时指定将要发生事件的方法.它允许编程人员轻松.有效地管理属性访问: set get delete 在其他编程语言中,描述符被称作 setter 和 getter,而公共函数

Python进阶-----自定制property

一.回顾python内置的装饰器@property @property的作用就是将类的函数属性同对象的数据属性一样可供对象直接调用(静态属性),而不需要加() 1 class Room: 2 def __init__(self,name,width,length): 3 self.name = name 4 self.width = width 5 self.length = length 6 7 @property #这个装饰器可以使得Room实例化的对象直接调用area这个函数属性 8 de

python中名称修饰与描述符

名称修饰 java和C#等其他高级语言中都有private关键字来修饰一个属性或字段是私有的,但是python中并没有private,而是有个与它接近的概念旧式名称修饰.每当在一个属性前面加上__前缀,解释器就会立刻将其重命名: 直接访问会抛异常 利用dir函数查看内部属性 python内部会把__前缀的属性重命名为[_类名+属性名]:因此在python中如果一个属性不是共有的就约定使用双下划线__为前缀,它不会调用任何名称修饰的算法,只是说名这个属性是该类的私有属性. 幸运的是python中还