循环继承?什么?

3 投票
1 回答
2656 浏览
提问于 2025-04-18 02:41

1 个回答

1

在创建了类 A2 和类 B2 之后,下面的代码:

super(B, self).a()
super(A, self).a()

在所有类的函数中,分别使用类型 A2B2,比如 A2.aB1.aB2.a 等等。

这意味着当我调用 A2.a 时,父类会调用基类 B1.a。在 B1.a 中,这个函数试图使用 super 函数,传入类型 B2 和一个 A2 的实例,这样就会出现一个错误,提示 obj 必须是类型的实例或子类型

当我调用 B2.a 时,父类会先调用 A2.a,然后再调用 B1.a。在调用 super 时,传入类型 B2 和一个 B2 的实例,这又会再次调用 A2.a 函数……这样就会无限循环,直到出现递归错误!

所以看起来像是循环继承,但实际上只是两个循环函数在特定参数下的表现。

撰写回答