定义一个类时,不加object,称为经典类,加了object,称为新式类
注意,python3.6后,在功能上已经没有经典类和新式类的区分。都是广度优先原则。
也就是说
class A:
等价于
class A():
等价于
class A(objejct):
下面一个例子 来说明调用的原则:
class A(object):
def foo(self):
print('called A.foo()')
class B(A):
pass
class C(A):
def foo(self):
print('called C.foo()')
class D(B, C):
pass
if __name__ == '__main__':
d = D()
d.foo()
以上代码,调用的过程是B-C-A ,也就是广度优先。
如果把上面的
class A(object):
改成
class A:
或者
class A():
结果都是 一样的。
打印出:called C.foo()
再次提醒,该规律适用于python3.6(包含3.6)以后,其他版本自己去测试
更多粉丝可见文章,欢迎点击关注!