从Python 2.6开始,您可以使用抽象基类collections.Hashable
:
>>> import collections
>>> isinstance({}, collections.Hashable)
False
>>> isinstance(0, collections.Hashable)
True
的文档中也简要提到了这种方法 。
这样做意味着,TypeError
在程序尝试检索其哈希值时,该类的实例不仅会提出适当的要求,而且在检查时也将正确地将它们标识为不可散列的isinstance(obj, collections.Hashable)
(不同于定义自己__hash__()
明确声明的类的类TypeError
)。