浅谈继承之多继承
Posted jb9527
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈继承之多继承相关的知识,希望对你有一定的参考价值。
‘‘‘ 多继承:字面意思即继承多个父类 上一篇博文提到,一个类可以继承一个类,继承之后可以使用父类的方法和属性,那么一个类可以继承多个类吗? 如果可以继承的话,那如果两个父类中有一样的方法的情况下,子类继承哪一个呢? ‘‘‘ class Father(): def func(self): print("我是爸爸") def money(self): print("爸爸给我100元") class Mother(): def func(self): print("我是妈妈") def work(self): print("妈妈给我做饭") class Son(Father,Mother): pass a = Son() a.func() #我是爸爸,使用爸爸的还是妈妈的方法,最终执行的是爸爸的方法,因为在继承时,如果字类继承了多个父类,会从第一个里面找(即靠左边的). a.money() #爸爸给我100元 a.work() #妈妈给我做饭 ‘‘‘ 如果不想继承父类的方法怎么办?方法重写 ‘‘‘ class Father(): def func(self): print("我是爸爸") def money(self): print("爸爸给我100元") class Mother(): def func(self): print("我是妈妈") def work(self): print("妈妈给我做饭") class Son(Father,Mother): def func(self): #将Father的方法覆盖掉 print("我喜欢你") pass a = Son() a.func() #我喜欢你 ‘‘‘ 重写父类的方法之后,如果又需要使用父类的方法呢?可以使用两种方法: ‘‘‘ ‘‘‘ # 第一种 class C(A,B): def play(self): A.play(self) #方法一 pass # 第二种 class C(A,B): def play(self): super().play() #方法二 pass ‘‘‘ class A(): def func(self): print("我是A") class B(A): def func(self): A.func(self) #或者super().func() print("-----") b = B() b.func() #用的是A父类的方法 #------------------通过__mor__属性或者mro方法查看类的继承关系----------- ‘‘‘ print(类名.mro()) print(类名.__mro__) ‘‘‘
以上是关于浅谈继承之多继承的主要内容,如果未能解决你的问题,请参考以下文章
Python--面向对象的程序设计之多继承组合应用开发软件规范