python对象-继承

在学习python对象的一些知识,到了继承这里发现一个报错:

TypeError: Cannot create a consistent method resolution

class oai():
    def __init__(self, name):
        self.name = name

    def intro(self):
        print("我是%s!" % self.name)

    def meng(self):
        print('主人,求抱抱!')

class hai(oai):

    def __init__(self, name, iq):
        self.name = name
        self.iq = iq

    def intro(self):
        print("我是高级机器人%s!智商高达%d!" % (self.name, self.iq))

    def hmeng(self):
        print("主人,每次想到怎么欺负你的时候,就感觉自己全身biubiubiu散发着智慧的光芒!")

#此处继承顺序有误,因为hai类已经继承了oai类,按照先继承oai再hai的顺序会发生错乱,故会报错
class super(oai,hai):

    def suMeng(self):
        print('pika, qiu!')
        print('''             へ     /|
                      /\7   ∠_/
                     / │  / /
                     │ Z_,< /  /`ヽ''')


andi = super("andi", 190)
andi.suMeng()

解决方法:继承多个子类时,如果其中一个子类时也是继承的子类,则需要先继承子类再继承对应的父类。

实际,继承多个子类时,子类若是继承的,则没有很大必要再继承该子类对应的父类,写太多也可能会很复杂,也会出现奇奇怪怪的报错

修改后:

class oai():
    def __init__(self, name):
        self.name = name

    def intro(self):
        print("我是%s!" % self.name)

    def meng(self):
        print('主人,求抱抱!')

class hai(oai):

    def __init__(self, name, iq):
        self.name = name
        self.iq = iq

    def intro(self):
        print("我是高级机器人%s!智商高达%d!" % (self.name, self.iq))

    def hmeng(self):
        print("主人,每次想到怎么欺负你的时候,就感觉自己全身biubiubiu散发着智慧的光芒!")

# 调整了继承的顺序,可以成功运行
class super(hai, oai):

    def suMeng(self):
        print('pika, qiu!')
        print('''             へ     /|
                      /\7   ∠_/
                     / │  / /
                     │ Z_,< /  /`ヽ''')


andi = super("andi", 190)
andi.suMeng()

运行效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值