gpt4 book ai didi

Python类递归

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:31 24 4
gpt4 key购买 nike

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

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

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

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

关于Python类递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56567498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com