通过实例解析python描述符原理作用
作者:yaominghui 发布时间:2021-01-15 03:14:57
标签: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(类对象,属性))语句时,都会调用该方法。
来源:https://www.cnblogs.com/xiaobaizzz/p/12227340.html


猜你喜欢
- 因项目需要,需要使用C#控制台程序执行python脚本,查询各种资料后可以成功调用了,记录一下,以备后面遗忘。只尝试了两种调用方式,第一种只
- 前几天安装Python的时候没有装上pip工具,所以只能现在手动安装了。首先,访问https://bootstrap.pypa.io/get
- #!/usr/bin/python#coding=gbkclass User: def __init__
- 本文实例讲述了python实现复制整个目录的方法。分享给大家供大家参考。具体分析如下:python有一个非常好用的目录操作类库shutil,
- 1.Django框架Django是一个开放源代码的Web应用框架,由Python写成。它采用 了MVC的框架模式,即模型(M)、视图(V)和
- 如下所示:区别ArrayTensor类型uint8,float32系列{}各类型相互转换uint8转float64:image = imag
- 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下我是从 官网 上面下载的社区版MySQL(版本
- 我们打开Google的时候可能大家会发现,无论你输入Google的任何网址,它都根据你使用的语言自动判断并跳转到不同的语言界面。也就是你用不
- pycharm下载库时出现Failed to install package怎么解决?奶奶都会解决的那种。一、当前现状 看看你是否也是这种情
- jquery作为一款高质量的框架被大多web开发者所推崇。jquery也的确是一款伟大的产品,在实际开发中明显提高了效率。但是任何产品并不是
- 忽然想起一个CSS的特性,写一段代码玩玩:<style type="text/css">body {font
- 本文实例为大家分享了Vue实现计时器的具体代码,供大家参考,具体内容如下功能简介:1、初始值为0,点击【加】按钮,数字自+1;连续点击【加】
- 上周跟朋友喝咖啡时聊起我想学Python,她恰好也有这个打算,顺便推荐了一本书《编程小白的第1本Python入门书》,我推送到Kindle后
- 递归是一种较为抽象的数学逻辑,可以简单的理解为「程序调用自身的算法」。 * 对递归的解释是:递归(英语:Recursion),又译为递回,
- 本篇不是教给大家如何去学习python,有需要详细深入学习的朋友可以参阅:Python基础语言学习笔记总结(精华)本文通过一周快速学习pyt
- 三种方法:①直接使用dict②使用defaultdict③使用Counter ps:`int()`函数默认返回0 ①di
- groupcache 简介在软件系统中使用缓存,可以降低系统响应时间,提高用户体验,降低某些系统模块的压力.groupcache是一款开源的
- 数据丢失(缺失)在现实生活中总是一个问题。 机器学习和数据挖掘等领域由于数据缺失导致的数据质量差,在模型预测的准确性上面临着严重的问题。 在
- 前言本文主要给大家介绍了利用django-suit模板在管理后台添加自定义的菜单和自定义的页面、设置访问权限的相关内容,分享出来供大家参考学
- 对于使用虚拟主机的站长朋友,我们可能不知道该服务器是否安装了某种我们需要的组件。这时我们可以使用下面的代码来判断。该函数功能:检查是否存在系