python中的类分为经典类(旧式类)和新式类.python的新式类是2.2版本为了统一类和实例引进来的。
在Python2.x中默认都是经典类,只有显式继承了对象的才是新式类。
如下所示:
<前>
<代码> #新式类,显示继承对象
类(对象):
通过
#经典类
甲级():
通过
#经典类
甲级:
通过
代码>
在python3.x中取消了经典类,默认都是新式类,并且新式类不需要显式的继承对象对象。如下所示,这三种写法都可以,并无区别:
<前> <代码> #第一种 类(对象): 通过 #第二种 甲级(): 通过 #第三种 甲级: 通过 代码>新式类和经典类的区别
-
<李>新式类都从对象继承,经典类不需要。李>
<李>经典类的> <代码> MRO 代码(方法解析顺序基类搜索顺序)算法是采用深度优先搜索,而新式类的
<代码> MRO 代码>算法采用C3算法广度优先搜索。李>
<李>新式类相同父类只执行一次构造函数,经典类重复执行多次。李>
新式类和经典类最大的不同在于继承搜索的顺序发生了改变。
经典类采用深度优先搜索,也就是先深入继承树左侧查找,然后再返回,开始查找右侧:
<前>
<代码> A类:
def显示(自我):
print(“的”)
B类(一个):
def显示(自我):
打印(“B”)
C类(一个):
def显示(自我):
打印(“C”)
类D (B, C):
通过
d=d ()
d.show ()
#从B
代码>
新式类采用广度优先搜索,先在水平方向查找,再向上查找:
<前> <代码>类(对象): def显示(自我): print(“的”) B类(一个): def显示(自我): 打印(“B”) C类(一个): def显示(自我): 打印(“C”) 类D (B, C): 通过 d=d () d.show () 从C # 代码>参考: https://www.9xkd.com/