python描述器的访问顺序
- 更新时间:2021-08-04 09:36:27
- 编辑:曹商丽
给寻找编程代码教程的朋友们精选了相关的编程文章,网友厍琼英根据主题投稿了本篇教程内容,涉及到Python相关内容,已被620网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。
参考资料
- 《机器学习算法框架实战:Java和Python实现》配书资源 配套资源 / 5.32 MB / 麦嘉铭 推荐度:
- 《Python 3.0科学计算指南》代码实例资源 配套资源 / 2.68 MB / 克劳斯·福勒 推荐度:
- 预测分析建模:Python与R语言实现 PDF 电子书 / 79.4 MB / 托马斯 推荐度:
- 跟老齐学Python:数据分析 PDF 电子书 / 198.5 MB / 齐伟 推荐度:
- Python与数据挖掘 PDF 电子书 / 20.1 MB / 张良均 杨海宏 何子健 杨征等 推荐度:
正文内容
今天在网上看到《python描述器的访问顺序》,技术要点讲的很好,把代码经过测试发布到这里,看完如果觉得有用请记得收藏。
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
1、顺序说明
数据描述器 > 实例属性 > 非数据描述器;实例属性 > 类属性。
当存在描述器的时候,一个类实例的查找属性顺序为:先查找类或父类中是否有数据描述器属性,如果有那么,先访问数据描述器,如果没有数据描述器 --> 那么就会查找自己实例的dict属性,如果dict属性里面也没有找到 --> 然后会在类或父类的非数据描述器进行查找。
2、实例
# 例子二 class A: def __init__(self): self.x = 1 def __get__(self, instance, owner): """ 以下两个参数都是「必须参数」,约定使用 instance: 描述器所在类的实例 owner:调用描述器的类 """ return self.x def __set__(self, instance, value): """ 以下两个参数都是「必须参数」,约定使用 instance: 描述器所在类的实例 value:用来设置属性的值 """ self.x = value def __delete__(self, instance): """ 以下参数是「必须参数」,约定使用 instance: 描述器所在类的实例 """ pass class B: def __init__(self): self.x = 1 def __get__(self, instance, owner): return self.x class C: a = A() b = B() def __init__(self, a, b): self.b = a self.b = b
上面在class C中,分别定义了资料描述器和非资料描述器a,b以及同名的实例属性,进行以下输出测试,发现实例c只存在实例属性b,不存在实例属性a,说明其确实是被资料描述器,即类属性a给屏蔽了。
以上就是python描述器的访问顺序,大家如果怕记忆混淆,可以记得数据访问器在最前面就行了。对于访问顺序的理解,大家不妨运行实例代码测试。
相关教程
-
Python Pandas实现数据分组求平均值并填充nan的示例
今天小编就为大家分享一篇Python Pandas实现数据分组求平均值并填充nan的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
发布时间:2019-09-08
-
python中join与os.path.join()函数实例详解
os.path.join()函数用于路径拼接文件路径,下面这篇文章主要给大家介绍了关于python中join与os.path.join()函数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
发布时间:2019-07-23