EduCoder-Linux 与 Python编程2021-类的继承-第4关:多重继承

任务描述

在 Python 中,多重继承就是允许子类继承多个父类,子类可以调用多个父类的方法和属性。但是,当多个父类拥有相同方法名的方法时,我们通过方法名调用父类方法就有一定的顺序。本关的任务就是让学习者掌握多重继承。

相关知识

请先看下面这个例子:

class A(object):
def test(self):
print(“this is A.test()”)
class B(object):
def test(self):
print(“this is B.test()”)
def check(self):
print(“this is B.check()”)
class C(A,B):
pass
class D(A,B):
def check(self):
print(“this is D.check()”)
class E(C,D):
pass
在这个例子中,类C继承自类A和类B,类D继承自类A和类B,类E继承自类C和类D。继承情况如下图1所示:

图1
图 1

在我们调用E.test()时,在类A和类B中都存在这个方法。但是由于在多重继承中遵循广度优先的方式,所以程序最先搜索类E,然后再搜索类C和类D。如果还没找到,再到类A中查找。若类A中存在这个方法,则调用这个方法,若在类A中也没有找到,则再到类B中查找。调用E.test()结果为:

this is A.test()
如果调用E.check()方法,那么先到类E中查找,然后在类C中查找,再到类D中查找。在类D中找到这个方法,调用这个方法。调用E.check()的结果为:

this is D.check()
如果您想了解更多多重继承的相关知识,请参考:[美] Wesley J.Chun 著《 Python 核心编程》第十三章。

编程要求

本关的编程任务是补全src/Step4/multiInherit.py文件的代码,实现当调用类E的test()时,继承的是类A的test()。具体要求如下:

填入定义子类C的代码;
填入定义子类D的代码。
本关涉及的代码文件src/Step4/multiInherit.py的代码框架如下:

class A(object):
def test(self):
print(“this is A.test()”)
class B(object):
def test(self):
print(“this is B.test()”)
def check(self):
print(“this is B.check()”)
#请在下面填入定义类C的代码
########## Begin ##########
########## End ##########
pass
#请在下面填入定义类D的代码
########## Begin ##########
########## End ##########
def check(self):
print(“this is D.check()”)
class E(C,D):
pass
e = E()
e.test()

测试说明

本关中填入代码后直接运行程序,按照运行结果判断正误,无需测试文件。以下是平台对src/Step4/multiInherit.py的样例测试集:

预期输出:

this is A.test()
开始你的任务吧,祝你成功!

掌握专业知识是创富的基础,没有这个基础,或是这个基础打得不够坚实,接下去的路你将寸步难行。创富者首先要做的便是成为这个行业的专家。

代码示例

class A(object):
    def test(self):
        print("this is A.test()")
class B(object):
    def test(self):
        print("this is B.test()")
    def check(self):
        print("this is B.check()")
# 请在下面填入定义类C的代码
########## Begin ##########
class C(A):
########## End ##########
    pass
# 请在下面填入定义类D的代码
########## Begin ##########
class D(B):
########## End ##########
    def check(self):
        print("this is D.check()")
class E(C,D):
    pass

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值