关于类的继承关系

关于类的继承关系

老师,您好,我想问一下,如果a类让b类继承,b类可以调用a类的东西(使用super()),然后C类再去继承B类后,去调用B类的东西可以使用super()来实现将上一类的东西继承过来是吗?

还有如果父类之间都是独立的,但是要给同一子类调用,那么就要使用父类.__init__(参数)是这个意思,是吧?老师,请讲解一下,嘻嘻~~~

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好:

同学的理解是正确的。

继承父类的三种写法:

1、父类名.父类方法(self):父类名.__init__(self,*args,*kwargs) 

2、super(子类名,self).父类方法():python2和python3中都可以使用,如果需要参数,则需要传参。

3、super().父类方法():仅在python3中使用,子类名和self是可以不写的。

关于多重继承:

1 多重继承首先需要一个共同的原始父类。

http://img1.sycdn.imooc.com//climg/5dfc361b09d7d4d701840181.jpg

A为原始父类,B、C继承A,D继承B,C,-->D继承A,形成了一个闭合。

本练习没有构成闭合的条件。

2  由于python多重继承遵循mro(method resolution order)方法解析顺序,python3使用的新式的继承方式,广度优先检索。

当使用super按照继承列表中的顺序从左向右检索到需要继承的方法后将停止继续检索(练习中的继承方式和例子中的继承方式相同)。

http://img1.sycdn.imooc.com//climg/5dfc362909c99f9105200268.jpg

由于B1中有构造函数,因此直接检索并继承B1中的构造函数后停止。

http://img1.sycdn.imooc.com//climg/5dfc364109f7a30105160243.jpg

如果我解决了同学的问题,请采纳!学习愉快^_^。

学习愉快^_^。

  • 为学习而奋斗 提问者 #1
    python多重继承遵循mro(method resolution order)方法解析顺序,python3使用的新式的继承方式,广度优先检索。 老师,您好,请问一下,这句话是什么意思啊?不太理解,请解释一下,嘻嘻~
    2019-12-20 16:29:13
  • 好帮手乔木 回复 提问者 为学习而奋斗 #2
    同学你好:广度优先遍历同学需要去学习数据结构才会了解(c语言基础),因此同学可以自己去了解数据结构。现在同学只需要知道其检索的顺序即可(如图)。当同学定义了类的多重继承后,可以使用mro()方法确定类继承之间的检索顺序即可。学习愉快^_^。
    2019-12-20 16:50:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师