最近我在接受采访时被问到这个问题:
以下代码有什么问题
class A(object):
def __init__(self):
super(self.__class__, self).__init__()
class B(A):
pass
b = B()
我没想到它会进行无限递归。那是为什么?
我知道这里描述的那些棘手的地方 How to avoid infinite recursion with super()? 因此我查看了对象的来源。 init 以查看是否有其他超级调用导致递归(http://hg.python.org/cpython/file/2.7/Objects/typeobject.c#l2872)。但据我所知,没有。
那为什么呢?