Python类(三)-多继承的区别

多继承的有两个方式,一个是广度优先,一个是深度优先
Python2中经典类按深度优先,新式类按广度优先
Python3中经典类和新式类都按广度优先

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR"

class A():
    def __init__(self):
        print('A')

class B(A):
    def __init__(self):
        print('B')

class C(A):
    def __init__(self):
        print('C')

class D(B,C):
    pass

D()

D继承了B,C

B,C分别继承了A

第一级为A,第二级为B和C(左边的优先),第三级为D

首先在Python3环境下运行,看看结果

首先继承了B,把B中内容改为pass,运行

D继承了C,再把C中内容改为pass,运行

D最后继承了A

可见广度优先的顺序为:B->C->A,即先同一级,再上一级

再在Python2环境中运行,看看是什么情况

首先是B,把B中内容改为pass,运行

D继承了A,把A中内容改为pass,运行

D最后继承了C

深度优先的继承顺序为:B->A->C,即先上一级,再同一级

posted @ 2018-01-26 18:42  Sch01aR#  阅读(257)  评论(0编辑  收藏  举报