zoukankan      html  css  js  c++  java
  • TypeError: Error when calling the metaclass bases Cannot create a consistent method resolution order (MRO) for bases A2, A1 出现原因及其解决办法

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

      源代码

     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()
  • 相关阅读:
    微信分享 apicloud方式 中遇到的坎
    css之颜色篇
    css总结
    记一些茅塞顿开的事情
    apicloud
    安装MySQL
    智能家居
    java
    数据库设计好不好,分配很重要。
    WP8.1的shell:SystemTray去哪了?
  • 原文地址:https://www.cnblogs.com/seven777/p/7189932.html
Copyright © 2011-2022 走看看