Python 属性错误:';功能';对象没有属性'';索引“;
在python中,我试图获得递归的深度(dor)。在将所有dor内容添加到我的代码中之前,它工作得很好,但是在添加dor内容之后,我收到了一个关于我的代码的属性错误。这是我接收错误的函数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) 免责声明
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()