python中的类分为经典类(old-styleclasses)和新式类。Python的新类是在2.2版本中引入的,用于统一类和实例。在Python2.x中,默认都是经典类,只有显式继承object的才是新式类。如下图:#New-style类,显示继承对象classA(object):pass#经典类classA():pass#经典类classA:pass在python3.x中取消了经典类,默认为new-styleclass,而New-styleclasses不需要显式继承自object。如下图,这三种写法都是可以的,没有区别:#第一种classA(object):pass#第二种classA():pass#第三种classA:pass新式类与经典类区别在于新式类继承自object,而经典类则没有。经典的MRO(methodresolutionorderbaseclasssearchorder)算法采用深度优先搜索,而新型MRO算法采用C3算法广度优先搜索。new-style类的同一个父类的构造函数只执行一次,而classic类重复执行多次。新式类与经典类最大的区别在于继承查找的顺序发生了变化。经典类采用深度优先搜索,即先深入继承树左侧搜索,然后返回开始搜索右侧:classA:defshow(self):print("FromA")B类(A):defshow(self):print("FromB")C类(A):defshow(self):print("FromC")D类(B,C):passd=D()d.show()#FromNew-styleclassB采用广度优先搜索,先横向搜索,再向上搜索:classA(object):defshow(self):print("FromA")B类(A):defshow(self):print("FromB")C类(A):defshow(self):print("FromC")D类(B,C):passd=D()d.show()#来自C参考:https://www.9xkd.com/
