是因为B类里面带了super吗,因为B是mro顺序的最后一个,带了反而有问题
感觉挺绕的,需要有更复杂的例子来看
来看看
学习
1
无条件支持楼主
我猜是因为 调用super.__init__()时省略的参数需要与def __init__()内的参数相同,但是在C继承A的过程中,A定义的__init__()参数只有self,而C传递进去的有self和arg两个参数,导致参数过多报错。
所以问题在于?
B-D-A-C-E
{:9_229:}
class A
c把arg参数传给a,但是a收不到,没法传给下一个D
111
不知道呜呜呜呜呜{:9_234:}
好好
O中不存在方法__init__,但两条路径都最终指向O,两条路径无法返回吧
Edmound 发表于 2025-5-17 00:53
O中不存在方法__init__,但两条路径都最终指向O,两条路径无法返回吧
好吧,只是A中不存在arg参数
查看隐藏
本帖最后由 阿归 于 2025-5-30 01:23 编辑
class A:
def __init__(self, arg):
super().__init__(arg)
print("FishA")
class B:
def __init__(self):
super().__init__()
print("FishB")
class C(A):
def __init__(self, arg):
super().__init__(arg)
print("FishC")
class D(B):
def __init__(self, arg):
super().__init__()
print("FishD")
class E(C, D):
def __init__(self, arg):
super().__init__(arg)
print("FishE")
e = E(520)
构造函数有些没有参数