Скажем, у меня есть словарь:
>>> d = {}
Он имеет метод clear()
:
>>> d.clear
<built-in method clear of dict object at 0x7f209051c988>
... который имеет атрибут __hash__
:
>>> d.clear.__hash__
<method-wrapper '__hash__' of builtin_function_or_method object at 0x7f2090456288>
... который можно вызывать:
>>> callable(d.clear.__hash__)
True
Так почему я не могу его хешировать?
>>> hash(d.clear)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
Примечание: Я знаю, что объекты dict
не сотрясаются - мне любопытно, почему это ограничение распространяется на их методы, хотя, как отмечено выше, они, похоже, заявляют об обратном?