我不明白为什么我的代码可以工作。我没有此代码的实际应用;只是想知道 python 中的类。
import sys
sys.setrecursionlimit(20)
class A():
def __init__(self):
self.a = object
def rec(self,argument):
self.a = argument
class B(A):
def __init__(self):
super(B,self).__init__()
self.a = self
myObject = B()
myObject.rec(myObject)
print(myObject.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a)
递归限制应该禁止我打印最后一行。但我可以像永远一样调用一个属性。
请您参考如下方法:
这不是一种会耗尽调用堆栈的递归方式,这就是sys.setrecursionlimit deals with。 :
Set the maximum depth of the Python interpreter stack to limit. . .
这只是一遍又一遍地自引用同一个对象,它不会像递归函数调用那样消耗内存或堆栈帧。
将其视为一个链表,但其中每个节点仅指向其自身而不是另一个节点。它只会为自引用节点消耗足够的内存,并且除非您尝试递归地迭代它,否则不涉及任何递归函数调用。
这是一个(有争议的)递归结构,而不是一组递归函数调用。
