我为一个对象创建了一个散列函数。我遇到的问题是,我在哈希函数中创建的值不是函数返回的值
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)
因此,当我从散列打印时,我得到93792909800245310080479536979750034401273674738852415427366199722413460820022
,
但是当我打印hashkey时,我得到了377513311013302392
?为什么?
EDIT:所以我显式地调用了hash(),得到了我期望的数字,但是由于我重写了hash(),我不应该从hash()得到相同的值吗
从the docs:
93792909800245310080479536979750034401273674738852415427366199722413460820022
远远超过了这些限制试试这个:
输出:
相关问题 更多 >
编程相关推荐