【发布时间】:2013-06-30 20:24:36
【问题描述】:
我正在尝试使用一个对象作为 Python 中字典的键值。我遵循其他一些帖子的建议,我们需要实现 2 个功能:__hash__ 和 __eq__
有了这个,我期待以下工作,但它没有。
class Test:
def __init__(self, name):
self.name = name
def __hash__(self):
return hash(str(self.name))
def __eq__(self, other):
return str(self.name) == str(other,name)
def TestMethod():
test_Dict = {}
obj = Test('abc')
test_Dict[obj] = obj
print "%s" %(test_Dict[hash(str('abc'))].name) # expecting this to print "abc"
但它给了我一个关键的错误信息:
KeyError: 1453079729188098211
【问题讨论】:
-
您使用的是什么版本的 Python?
return str(self.name) == str(other,name)显然在str(other,name)中有一个错误,我不明白这是如何不提出来的。即使它是str(other.name),它仍然无法工作,因为hash(str('abc'))没有.name属性
标签: python object dictionary key