python3新式类和经典类的区别

在Python 3.x中取消了经典类,默认都是新式类,并且不必显式的继承object,也就是说:
class Person(object):pass
class Person():pass
class Person:pass
三种写法并无区别,推荐第一种

但是在Python2.x中,默认都是经典类,只有显式继承了object才是新式类,即:
class Person(object):pass 新式类写法
class Person():pass 经典类写法
class Person:pass 经典类写法

他们最明显的区别在于继承搜索的顺序发生了改变,即
经典类多继承搜索顺序(深度优先):
先深入继承树左侧查找,然后再返回,开始查找右侧

例python3新式类:

class A:
    def save(self):
        print("a")


class B(A):
    def save(self):
        print("b")


class C(A):
    def save(self):
        print("c")


class D(B, C):
    def __init__(self):
        pass


d = D()
d.save()

>> b

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