码迷,mamicode.com
首页 > 其他好文 > 详细

浅谈继承之多继承

时间:2019-03-27 17:09:31      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:class   执行   color   浅谈   多个   code   elf   self   情况   

‘‘‘
多继承:字面意思即继承多个父类
上一篇博文提到,一个类可以继承一个类,继承之后可以使用父类的方法和属性,那么一个类可以继承多个类吗?
如果可以继承的话,那如果两个父类中有一样的方法的情况下,子类继承哪一个呢?
‘‘‘
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__)
‘‘‘

 

浅谈继承之多继承

标签:class   执行   color   浅谈   多个   code   elf   self   情况   

原文地址:https://www.cnblogs.com/jb9527/p/10608588.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!