Python对象属性的查找顺序

  • 更新时间:2021-06-30 09:12:29
  • 编辑:向妙旋
本站精选了一篇相关的编程文章,网友双清润根据主题投稿了本篇教程内容,涉及到Python相关内容,已被263网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。

参考资料

正文内容

为学习python的程序员分享一篇技术文章,好久没看到这么好的Py技术类文章,改了一下错误代码,希望大家能有所收获。

Python对象属性的查找顺序

1、查找顺序

(1)类和父类字典的数据描述器

(2)实例字典

(3)类和父类字典中的非数据描述器

无论类有多少个继承级别,该类对象的实例字典总是存储了所有的实例变量,这也是 super 的意义之一。

2、实例

def get_attribute(obj, name):
    class_definition = obj.__class__
 
    descriptor = None
    for cls in class_definition.mro():
        if name in cls.__dict__:
            descriptor = cls.__dict__[name]
            break
 
    if hasattr(descriptor, '__set__'):
        return descriptor, 'data descriptor'
 
    if name in obj.__dict__:
        return obj.__dict__[name], 'instance attribute'
 
    if descriptor is not None:
        return descriptor, 'non-data descriptor'
    else:
        raise AttributeError

以上就是Python对象属性的查找顺序,希望对大家有所帮助。更多Python学习推荐:python教学

本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

相关教程

  • Python实现插入排序和选择排序的实例内容详解

    这篇文章主要介绍了Python实现插入排序和选择排序的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

    发布时间:2019-08-29

  • Python占用的内存优化教程

    这篇文章主要给大家介绍了关于Python占用的内存优化教程,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    发布时间:2019-09-08

用户留言