TypeError: Error when calling the metaclass bases Cannot create a consistent method resolution o...

原本想测试继承,出现了这个错误:

  源代码

 1 class A1(object):
 2     def fo1(self):
 3         print "i'm A1"
 4 class A2(object):
 5     def fo1(self):
 6         print "i'm A2"
 7 class B1(A1,A2):
 8     def bar(self):
 9         print "i'm B1"
10 class B2(A2,A1):
11     def bar(self):
12         print "i'm B2"
13 class C(B1,B2):#提示出现错误的地方
14     pass
15 if __name__=='__main__':
16     m=C()
17     print C.__mro__
18     m.bar()
19     m.fo1()

错误行数出现在13行,实际就是构图的时候产生了错误,(根据继承先后广搜构图)

此时构图为

显然不能出现俩A1,因此会出现如上的报错

要B都与A有联系只能是下面这种继承构图才不会出错

即将代码修改为

class A1(object):
    def fo1(self):
        print "i'm A1"
class A2(object):
    def fo1(self):
        print "i'm A2"
class B1(A1,A2):
    def bar(self):
        print "i'm B1"
class B2(A1,A2):
    def bar(self):
        print "i'm B2"
class C(B1,B2):
    pass
if __name__=='__main__':
    m=C()
    print C.__mro__
    m.bar()
    m.fo1()

 

转载于:https://www.cnblogs.com/seven777/p/7189932.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值