我有这样的代码:
class A(object):
def __init__(self):
self.a = 1
class B(A):
def __init__(self):
self.b = 2
super(self.__class__, self).__init__()
class C(B):
def __init__(self):
self.c = 3
super(self.__class__, self).__init__()
实例化 B 按预期工作,但实例化 C 无限递归并导致堆栈溢出。我该如何解决这个问题?
实例化 C 调用时B.__init__
, self.__class__
仍将是 C,因此 super() 调用将其带回 B。
调用 super() 时,直接使用类名。所以在B中调用super(B, self)
, 而不是super(self.__class__, self)
(并且为了更好地衡量,使用super(C, self)
在C)中。从 Python 3 开始,您可以使用不带参数的 super() 来实现相同的效果
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)