Python类-多继承的区别

Posted Sch01aR#

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,即先上一级,再同一级

以上是关于Python类-多继承的区别的主要内容,如果未能解决你的问题,请参考以下文章

Python中新式类 经典类的区别(即类是否继承object)

多继承

多继承之MRO

Python_12 多继承与多态

Python类的多重继承问题深入分析

php如何实现多继承?