为什么没有明确定义__hash__的内置函数或类没有在dicts中使用__hash__?

时间:2017-06-18 17:15:45

标签: python

例如:

import cProfile
cProfile.run('print(len({i:i for i in range(-10, 10)}))') # 20; no hash shown

class Test():
    def __init__(self, i):
        self.i = i

cProfile.run('print(len({Test(i):i for i in range(-10, 10)}))') # 20; init, no hash

可是:

class Test():
    def __init__(self, i):
        self.i = i

    def __hash__(self):
        return self.i

cProfile.run('print(len({Test(i):i for i in range(-10, 10)}))') # 20; init and hash

对于前两个,cProfile没有显示任何内容表明dicthash。但是,它必须以某种方式比较键,我不知道如何解决这个矛盾。 Python如何知道如何在没有hash的情况下为前两个存储对象?

0 个答案:

没有答案