Python中的类属性、实例属性、查找顺序(mro查找)
一、类属性和实例属性
属性是定义在类内部的一些变量或方法
直接上例子
class A:
name = 'A'
def __init__(self):
self.name = 'obj'
a = A()
print(a.name) # obj
class A:
name = 'A'
def __init__(self):
pass
a = A()
print(a.name) # A
属性查询顺序是从底向上,上述代码在打印a.name
时,先在实例中查找,找不到的话再去类属性中查找。
二、多继承时的查找顺序(MRO算法)
从python2.3
开始到现在的python3
,Python
的属性搜索算法统称为了C3
算法,一大堆公式,自己百度吧。