【发布时间】:2018-03-14 02:14:22
【问题描述】:
我为一个对象创建了一个 hash 函数。我遇到的问题是我在哈希函数中创建的值不是函数返回的值。
class someClass():
def someClass(str1, str2, str3):
self.str1 = str1
self.str2 = str2
self.str3 = str3
...
def __hash__(self):
hash_val = int(sha256((self.str1+ self.str2
+ self.str3).encode('utf-8')).hexdigest(), 16)
# print's 937929098002453100804....
print(hash_val)
return hash_val
...
testClass = someClass('test', 'testClass', 'testCase')
hashKey = hash(testClass)
# print's 377513311013302392
print(hashKey)
所以当我从 hash() 打印时,我得到93792909800245310080479536979750034401273674738852415427366199722413460820022,
但是当我打印 hashkey 我得到377513311013302392?为什么?
编辑:所以我明确地调用了hash(),得到了我期望的数字,但是由于我覆盖了hash(),我不应该从 hash() 获得相同的值吗?
【问题讨论】:
-
你为什么打电话给
hash(someClass)?你不是说hash(testClass)吗? -
是的,刚刚修好了
-
这段代码是您使用的确切代码并且返回错误结果吗?
-
是的,和我现在的代码很相似。
-
“非常相似”是不够的。向我们展示您真实代码的相关部分,或提供一个简短、完整的示例来演示错误。
标签: python python-3.x hash