qq575633247 发表于 2023-5-7 13:12:15

Python类多重继承报错

class Parent:
    def __init__(self):
      print('hello,')

class Child1(Parent):
    def __init__(self):
      super().__init__()
      print('1-world.')

class Child2(Child1):
    def __init__(self):
      super().__init__()
      print('2-world.')

class Child3(Child2):
    def __init__(self):
      super().__init__()
      print('3-world.')

class Child4(Parent,Child1,Child2,Child3):
    def __init__(self):
      super().__init__()
      print('4-world.')

a = Child4()

    class Child4(Parent,Child1,Child2,Child3):
TypeError: Cannot create a consistent method resolution
order (MRO) for bases Parent, Child1, Child2, Child3
请问为什么会报错,问了new Bing说这个代码没问题。但是运行的时候报错了

陶远航 发表于 2023-5-7 13:13:44

这个代码出错的原因是因为Child4类同时继承了Parent, Child1, Child2, Child3四个类,而这四个类之间的继承关系构成了一个继承关系图谱,称为方法解析顺序(Method Resolution Order, MRO)。在Python中,MRO是用于确定继承关系图谱中方法调用顺序的算法。然而,在这个例子中,由于多重继承关系图谱中存在环,即Child1、Child2、Child3都继承自Parent类,Child4又同时继承了这四个类,导致了MRO无法解决继承关系图谱中方法的调用顺序,从而出现了错误。

为了解决这个问题,您可以重新设计类的继承关系,避免多重继承中出现环的情况,或者使用super函数来确保正确的方法调用顺序。例如,您可以尝试将Child1、Child2、Child3类的继承关系更改为单一继承,或者通过更改继承的顺序来解决问题。
修改后的代码:
class Parent:
    def __init__(self):
      print('hello,')

class Child1(Parent):
    def __init__(self):
      super().__init__()
      print('1-world.')

class Child2(Parent):
    def __init__(self):
      super().__init__()
      print('2-world.')

class Child3(Child1, Child2):
    def __init__(self):
      super().__init__()
      print('3-world.')

class Child4(Child3):
    def __init__(self):
      super().__init__()
      print('4-world.')

a = Child4()

sfqxx 发表于 2023-5-7 13:22:34

????

不行啊

qq575633247 发表于 2023-5-7 13:30:28

sfqxx 发表于 2023-5-7 13:22
????

不行啊

{:10_245:}

歌者文明清理员 发表于 2023-5-7 13:30:54

sfqxx 发表于 2023-5-7 13:22
????

不行啊

你用的哪个站,我是先用ai.wuguokai.cn,不行的话chat.jinshutuan.com

sfqxx 发表于 2023-5-7 13:31:51

歌者文明清理员 发表于 2023-5-7 13:30
你用的哪个站,我是先用ai.wuguokai.cn,不行的话chat.jinshutuan.com

chat.jinshutuan.com
没有用了

歌者文明清理员 发表于 2023-5-7 13:33:10

sfqxx 发表于 2023-5-7 13:31
chat.jinshutuan.com
没有用了

,不是可以吗

sfqxx 发表于 2023-5-7 13:33:29

歌者文明清理员 发表于 2023-5-7 13:33
,不是可以吗

ahh,我不行qwq

歌者文明清理员 发表于 2023-5-7 13:34:05

sfqxx 发表于 2023-5-7 13:33
ahh,我不行qwq

截图

sfqxx 发表于 2023-5-7 13:34:31

歌者文明清理员 发表于 2023-5-7 13:34
截图

emmmm,又可以了{:10_262:}

歌者文明清理员 发表于 2023-5-7 13:36:36

sfqxx 发表于 2023-5-7 13:34
emmmm,又可以了

我刚才又去了一个新的求助帖,差点把这个也复制上去{:10_245:}

sfqxx 发表于 2023-5-7 13:37:26

歌者文明清理员 发表于 2023-5-7 13:36
我刚才又去了一个新的求助帖,差点把这个也复制上去

{:10_275:}

歌者文明清理员 发表于 2023-5-7 13:38:58

sfqxx 发表于 2023-5-7 13:37


所以,可以用 chat generative pre-trained transformer 回答问题,但是至少得瞟一眼他在胡说八道啥{:10_282:}
页: [1]
查看完整版本: Python类多重继承报错