在python中,我试图获得递归深度(dor)。在将所有的东西添加到我的代码之前,它工作得很好,但是在添加了dor之后,我收到了关于我的代码的属性错误。这是我收到错误的函数
def parse(json,dor=0):
parse.index[dor]=0
parse.keyList[dor]=[]
parse.jsonDict[dor]=dict()
parse.json[dor]=remove_white(json)
答案 0 :(得分:1)
免责声明:您正在做的事情很可能是错误的事情
您的代码之前有效,因为(我假设)您在函数对象上设置了一个属性:
def foo():
foo.bar = 4
运行时,函数对象会自行设置属性bar
。但是,当您添加__setitem__
(带方括号)时:
def foo():
foo.bar[dor] = 4
您现在说要修改foo.bar
,但foo.bar
还不存在!你可以修复"这是通过在第一次运行它之前手动设置对象:
def foo():
foo.bar[dor] = 4
foo.bar = {}
foo()
最有可能的是,您希望通过使用单独的对象来跟踪代码中的递归深度来完全避免这种混乱。仅仅因为你可以做某事并不意味着应该。
编辑:看看你的代码,看起来你应该使用类而不是parse
的函数。使用类是有道理的,因为您使用一组作用于它的方法来封装可变状态。当然,我也有义务指出你the standard library JSON module。