存在しないキーの呼び出しを時々受け取る辞書があるので、これらのケースを処理するためにhasattr
andを使用します。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
、2 回目はデフォルトの空の配列を使用するため1
、その過程で の値が失われます! どうしてこれなの?