Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 属性错误:';功能';对象没有属性'';索引“;_Python_Recursion_Attributeerror - Fatal编程技术网

Python 属性错误:';功能';对象没有属性'';索引“;

Python 属性错误:';功能';对象没有属性'';索引“;,python,recursion,attributeerror,Python,Recursion,Attributeerror,在python中,我试图获得递归的深度(dor)。在将所有dor内容添加到我的代码中之前,它工作得很好,但是在添加dor内容之后,我收到了一个关于我的代码的属性错误。这是我接收错误的函数 def parse(json,dor=0): parse.index[dor]=0 parse.keyList[dor]=[] parse.jsonDict[dor]=dict() parse.json[dor]=remove_white(json) 免责声明

在python中,我试图获得递归的深度(dor)。在将所有dor内容添加到我的代码中之前,它工作得很好,但是在添加dor内容之后,我收到了一个关于我的代码的属性错误。这是我接收错误的函数

 def parse(json,dor=0):
      parse.index[dor]=0
      parse.keyList[dor]=[]
      parse.jsonDict[dor]=dict()
      parse.json[dor]=remove_white(json)

免责声明:您所做的很可能是错误的事情

您的代码以前工作过,因为(我假设)您在函数对象上设置了一个属性:

def foo():
  foo.bar = 4
运行时,函数对象在自身上设置一个属性
bar
。但是,当您添加
\uuuuu setitem\uuuuu
(带方括号)时:

你现在说你想修改
foo.bar
,但是
foo.bar
还不存在!在首次运行对象之前,可以通过手动设置对象来“修复”此问题:

def foo():
  foo.bar[dor] = 4

foo.bar = {}
foo()
很可能,您希望通过使用单独的对象来跟踪代码中的递归深度,从而避免整个混乱。仅仅因为你能做某事并不意味着你应该做


编辑:查看您的代码,似乎您应该使用类而不是函数来解析
。使用类是有意义的,因为您使用一组作用于它的方法来封装可变状态。当然,我也有义务向您指出。

您有一个名为
parse
的函数,您正在修改一个名为
parse
的变量,该变量引用您的函数。你能发布你所有的代码吗?
parse.index
等就是这个函数的一些属性
parse
,它们分配在哪里?你可能想考虑一个类。@布兰德,我宁愿不要,因为它是一条270线。monstrosity@LukeMaresca:270行很小。@LukeMaresca:只需粘贴所有代码即可。调试我们实际上看不到的代码是没有意义的。
def foo():
  foo.bar[dor] = 4

foo.bar = {}
foo()