千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > python描述器的访问顺序

python描述器的访问顺序

来源:千锋教育
发布人:xqq
时间: 2023-11-13 08:10:26 1699834226

python描述器的访问顺序

本文教程操作环境:windows7系统、Python3.9.1,DELLG3电脑。

1、顺序说明

数据描述器>实例属性>非数据描述器;实例属性>类属性。

当存在描述器的时候,一个类实例的查找属性顺序为:先查找类或父类中是否有数据描述器属性,如果有那么,先访问数据描述器,如果没有数据描述器-->那么就会查找自己实例的dict属性,如果dict属性里面也没有找到-->然后会在类或父类的非数据描述器进行查找。

2、实例

#例子二

classA:

def__init__(self):

self.x=1

def__get__(self,instance,owner):

"""

以下两个参数都是「必须参数」,约定使用

instance:描述器所在类的实例

owner:调用描述器的类

"""

returnself.x

def__set__(self,instance,value):

"""

以下两个参数都是「必须参数」,约定使用

instance:描述器所在类的实例

value:用来设置属性的值

"""

self.x=value

def__delete__(self,instance):

"""

以下参数是「必须参数」,约定使用

instance:描述器所在类的实例

"""

pass

classB:

def__init__(self):

self.x=1

def__get__(self,instance,owner):

returnself.x

classC:

a=A()

b=B()

def__init__(self,a,b):

self.b=a

self.b=b

上面在classC中,分别定义了资料描述器和非资料描述器a,b以及同名的实例属性,进行以下输出测试,发现实例c只存在实例属性b,不存在实例属性a,说明其确实是被资料描述器,即类属性a给屏蔽了。

以上就是python描述器的访问顺序,大家如果怕记忆混淆,可以记得数据访问器在最前面就行了。对于访问顺序的理解,大家不妨运行实例代码测试。更多Python学习教程请关注IT培训机构:千锋教育。

tags: python培训
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT