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

 更新时间:2020年01月22日 09:27:08   投稿:yaominghui  
这篇文章主要介绍了通过实例解析python描述符原理作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了通过实例解析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(类对象,属性))语句时,都会调用该方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • python logging 日志轮转文件不删除问题的解决方法

    python logging 日志轮转文件不删除问题的解决方法

    最近在维护项目的python项目代码,项目使用了 python 的日志模块 logging, 设定了保存的日志数目, 不过没有生效,还要通过contab定时清理数据
    2016-08-08
  • python中pylint使用方法(pylint代码检查)

    python中pylint使用方法(pylint代码检查)

    Pylint 提供了简单的方式来分析 Python 代码,其高可配置性很容易使一个部门的人员使用统一的代码风格。 本文将通过理论介绍和示例分析阐述如何 Pylint 来规范 Python 代码
    2018-04-04
  • PyCharm代码整体缩进,反向缩进的方法

    PyCharm代码整体缩进,反向缩进的方法

    今天小编就为大家分享一篇PyCharm代码整体缩进,反向缩进的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 给ubuntu18安装python3.7的详细教程

    给ubuntu18安装python3.7的详细教程

    这篇文章主要介绍了给ubuntu18安装python3.7的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • python中超简单的字符分割算法记录(车牌识别、仪表识别等)

    python中超简单的字符分割算法记录(车牌识别、仪表识别等)

    这篇文章主要给大家介绍了关于python中超简单的字符分割算法记录,如车牌识别、仪表识别等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-09-09
  • python moviepy 的用法入门篇

    python moviepy 的用法入门篇

    MoviePy(全套文件)是一个用于视频编辑Python库:切割、拼接、标题插入,视频合成(即非线性编辑),视频处理和自定义效果的创造,本文给大家介绍python moviepy 的用法详解,感兴趣的朋友跟随小编一起看看吧
    2022-02-02
  • Python爬虫如何应对Cloudflare邮箱加密

    Python爬虫如何应对Cloudflare邮箱加密

    这篇文章主要介绍了Python爬虫如何应对Cloudflare邮箱加密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Web自动化之Selenium常用操作方法大全

    Web自动化之Selenium常用操作方法大全

    Selenium是一种自动化测试工具,可以用于测试Web应用程序,它提供了一组用于自动化Web浏览器进行测试的API,下面这篇文章主要给大家介绍了关于Web自动化之Selenium常用操作方法的相关资料,需要的朋友可以参考下
    2023-06-06
  • Python实现的tcp端口检测操作示例

    Python实现的tcp端口检测操作示例

    这篇文章主要介绍了Python实现的tcp端口检测操作,结合实例形式分析了Python使用socket模块实现tcp端口检测功能的相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • win8下python3.4安装和环境配置图文教程

    win8下python3.4安装和环境配置图文教程

    这篇文章主要为大家详细介绍了win8下python3.4安装和环境配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07

最新评论