Powiedzmy mam słownika:Dlaczego nie mogę wywołać metody hash() na pozornie nieosiągalnej metodzie nieusuwalnej instancji?
>>> d = {}
Ma metodę clear()
:
>>> d.clear
<built-in method clear of dict object at 0x7f209051c988>
... który ma __hash__
atrybut:
>>> d.clear.__hash__
<method-wrapper '__hash__' of builtin_function_or_method object at 0x7f2090456288>
... co jest na żądanie:
>>> callable(d.clear.__hash__)
True
Dlaczego więc nie mogę tego zrobić?
>>> hash(d.clear)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
Uwaga: wiem, że dict
obiekty są unhashable - Jestem ciekaw, dlaczego to ograniczenie rozciąga się na ich metodach, choć, jak wspomniano wyżej, pojawiają się one twierdzić inaczej?