我有一本字典,有时会收到对不存在键的调用,所以我尝试使用hasattr
并getattr
处理这些情况:
key_string = 'foo'
print "current info:", info
print hasattr(info, key_string)
print getattr(info, key_string, [])
if hasattr(info, key_string):
array = getattr(info, key_string, [])
array.append(integer)
info[key_string] = array
print "current info:", info
第一次运行时integer = 1
:
current info: {}
False
[]
current info: {'foo': [1]}
再次运行此代码integer = 2
:
instance.add_to_info("foo", 2)
current info: {'foo': [1]}
False
[]
current info: {'foo': [2]}
第一次运行显然是成功的 ( {'foo': [1]}
),但hasattr
返回 false 并getattr
在第二次使用默认的空白数组,1
在过程中丢失了 的值!为什么是这样?