Skip to main content
 首页 » 编程设计

Python类递归

2025年05月04日21sky-heaven

我不明白为什么我的代码可以工作。我没有此代码的实际应用;只是想知道 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. . .

这只是一遍又一遍地自引用同一个对象,它不会像递归函数调用那样消耗内存或堆栈帧。

将其视为一个链表,但其中每个节点仅指向其自身而不是另一个节点。它只会为自引用节点消耗足够的内存,并且除非您尝试递归地迭代它,否则不涉及任何递归函数调用。

这是一个(有争议的)递归结构,而不是一组递归函数调用。