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对象属性的查找顺序 的全部内容, 来源链接: utcz.com/z/543835.html

回到顶部