【发布时间】:2012-05-30 06:51:54
【问题描述】:
我的字典有时会收到不存在的键的调用,因此我尝试使用 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的值!这是为什么呢?
【问题讨论】:
标签: python list class dictionary hasattr