yamx

元类下的属性查找

类与类间有这么一个关系:

class Mymeta(type):

    n = 1


class A:

    n = 2


class B(A, metaclass=Mymeta):

    n = 3

1、查找属性的调用方是对象

obj = B()

print(obj.n)

    obj首先从自身名称空间查找,无果则去obj的基类(B类)的名称空间查找,n=3; 若B类中也没有n,则去A类中找;A类也没有则报错

    对象的属性查找顺序:对象本身-->基类-->父类-->object类,不会查到元类上


2、查找属性的调用方是类

print(B.n)

    B类首先从自身查找,无果则去父类中找,最后元类中找

评论

© yamx | Powered by LOFTER