原本想測試繼承,出現了這個錯誤:
源代碼
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()