码迷,mamicode.com
首页 > 其他好文 > 详细

__getattr__,__getattribute__和__get__的区别

时间:2019-01-20 15:01:22      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:style   覆盖   name   dir   描述   特定   nbsp   self   col   

dir(object)  列出对象的大多数属性

getattr(object, name) 从object对象中获取name字符串指定的属性 

hasattr(object, name) 如果object对象中存在指定的属性, 或者能以某种方式通过object 对象获取指定的属性, 返回True

setattr(object, name, value) 把object对象指定属性的值设为value, 可能会创建一个新属性, 或者覆盖现有的属性

 

getattr(obj, ‘attr‘) 以及obj.attr 和hasattr(obj, ‘attr‘)都会触发__getattribute__(obj, ‘attr‘) 方法, 只有当尝试获取指定的属性失败,搜索过obj, class和超类之后调用__getattr__

del obj.attr 触发Class.__delattr__(obj, ‘attr‘)方法

dir(obj)触发__dir__(obj)方法

setattr(obj, name, value) 或则通过obj.attr 设置对象属性时会调用__setattr__(self, name, value)

 

描述符是对多个属性运用相同存取逻辑的一种方式。

描述符是实现了特定协议的类, 这个协议包括__get__, __set__和__delete__方法 

__getattr__,__getattribute__和__get__的区别

标签:style   覆盖   name   dir   描述   特定   nbsp   self   col   

原文地址:https://www.cnblogs.com/frank-shen/p/10294701.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!