我知道这是由于试图访问未在上定义的属性而导致的属性错误
所以基本上我是在解析一个API返回的JSON响应。在
反应是这样的。在
{
"someProperty": {
"value": 123
}
},
{
"someProperty":null
},
我正在循环x = response.json()
对象并尝试作为
它可以手动使用解释器进行测试
In[2]: x = {1:2, 2:34}
In[3]: x.get('someProperty', {}).pop('value', 0)
Out[3]: 0
但是当在类函数中访问相同的函数时,它会引发属性错误。我做错什么了?在
只有当someProperty
的值为空时,才以编程方式调用方法时才会引发错误。
这是我在课堂上使用的方法。在
class SomeClass(object):
def __init__(self, **kwargs):
self.value = kwargs.get('someProperty', {}).pop('value', 0)
def save():
pass
现在的用法
x = response.json()
for num, i in enumerate(x):
j = SomeClass(**i)
j.save()
您忘记了
someProperty
存在,但设置为None
的情况。您在输入JSON中包含了该案例:这里的键存在于,其值被设置为
None
(JSON中null
的Python等价物)。然后,dict.get()
返回该值,None
没有.pop()
方法。在演示:
^{pr2}$dict.get()
仅当密钥不存在时返回默认值。在上面的示例中,"someProperty"
存在,因此返回它的值。在我会用一本空字典替换任何错误的值:
相关问题 更多 >
编程相关推荐