通过实例解析python描述符原理作用

作者:yaominghui 时间:2021-01-15 03:14:57 

这篇文章主要介绍了通过实例解析python描述符原理作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

本质上看,描述符是一个类,只不过它定义了另一个类中属性的访问方式。换句话说,一个类可以将属性管理全权委托给描述符类。

描述符类基于以下三种特殊方法,换句话说,这三种方法组成了描述符协议:

  • __set__(self, obj, type = None): 在设置属性时,将调用这一方法。

  • __get__(self, obj, value): 在读取属性时将调用这一方法。

  • __delete__(self, obj): 对属性调用del时将调用这一方法。

其中,实现了setter和getter方法的描述符被称为数据描述符,反之,如果只实现了getter方法,则称为非数据描述符。


#描述符类
class revealAccess:
 def __init__(self, initval = None, name = 'var'):
   self.val = initval
   self.name = name
 def __get__(self, obj, objtype):
   print("Retrieving", self.name)
   return self.val
 def __set__(self, obj, val):
   print("updating", self.name)
   self.val = val

class myClass:
 x = revelAccess(10, 'var "x"')
 y = 5
m = myClass()
print(m.x)
m.x = 20
print(m.x)
print(m.y)

Retrieving var "x"
10
updating var "x"
Retrieving var "x"
20
5

如果一个类的某个属性有数据描述符,那么每次查找这个属性时,都会调用描述符的__get__()方法,并返回它的值;同样,每次在对属性赋值时,也会调用__set__()方法。
当每次使用del类对象.属性(或者delattr(类对象,属性))语句时,都会调用该方法。

来源:https://www.cnblogs.com/xiaobaizzz/p/12227340.html

标签:python,描述,符
0
投稿

猜你喜欢

  • asp如何验证日期输入是否正确?

    2010-06-10 18:38:00
  • Scrapy项目实战之爬取某社区用户详情

    2022-04-16 11:36:31
  • Python+Pygame编写一个Pong游戏

    2023-08-04 15:58:31
  • python sort、sort_index方法代码实例

    2022-12-16 00:43:17
  • Python爬虫如何应对Cloudflare邮箱加密

    2023-10-16 22:25:35
  • ASP从数据库中获取下载文件

    2007-10-06 21:17:00
  • python机器学习库scikit-learn:SVR的基本应用

    2022-04-25 09:38:34
  • OpenCV实现图像滤波之双边滤波

    2022-05-14 07:35:30
  • mysql 错误:ERROR 1045 (28000): Access deni

    2010-09-30 14:48:00
  • 在python中如何建立一个自己的包

    2022-12-27 12:42:25
  • php牛逼的面试题分享

    2023-11-20 19:31:35
  • 解决python spyder 突然打不开的问题

    2022-07-07 19:43:06
  • 用MySQL内建复制功能来优化可用性

    2009-02-13 13:55:00
  • Python实现通过解析域名获取ip地址的方法分析

    2023-08-14 16:10:29
  • Python安装并操作redis实现流程详解

    2023-06-15 00:17:22
  • 你的网站使用了微格式了么

    2009-05-21 12:10:00
  • Mysql中limit的用法方法详解与注意事项

    2023-11-16 09:20:05
  • 浅谈 Mousewheel 事件

    2010-08-16 12:37:00
  • Sql Server 无日志文件附加

    2010-05-30 11:23:00
  • python数据处理之如何修改索引和行列

    2023-11-04 13:57:27
  • asp之家 网络编程 m.aspxhome.com