python新式类和经典类的区别?

首先:

Python 2.x中默认都是经典类,只有显式继承了object才是新式类

Python 3.x中默认都是新式类,不必显式的继承object

其次

新式类对象可以直接通过class属性获取自身类型:type
继承搜索的顺序发生了改变,经典类多继承属性搜索顺序: 先深入继承树左侧,再返回,开始找右侧;新式类多继承属性搜索顺序: 先水平搜索,然后再向上移动
-新式类增加了slots内置属性, 可以把实例属性的种类锁定到slots规定的范围之中
新式类增加了getattribute方法

再然后

在多继承中,新式类采用广度优先搜索,而旧式类是采用深度优先搜索。

最后

实例

class A():
    def __init__(self):
        pass
    def save(self):
        print "This is from A"
class B(A):
    def __init__(self):
        pass
class C(A):
    def __init__(self):
        pass
    def save(self):
        print  "This is from C"
class D(B,C):
    def __init__(self):
        pass
fun =  D()
fun.save()

经典类的答案: This is from A
新式类的答案: This is from C

你可能感兴趣的:(python新式类和经典类的区别?)