В една от първите лекции видяхме, че класовете и функциите в Python са mutable.
Защо тогава и двете могат да се ключ в dict <=> са hashable?
Например:
>>> {dict, "constructs a dict"}
{<class 'dict'>, 'constructs a dict'}
>>> {len: "returns the `length` of an object"}
{<built-in function len>: 'returns the `length` of an object'}
Същото става и с не-вградена функция.
Аз си мисля, че за всеки клас C
, обектът <class 'C'>
е единствен
и аналогично за функция. Така и да има collision в dict не е възможно обектът,
с който е станал collision-а да се сравни равен с нашият ключ(бил той клас или фунция).
Така стават невъзможни неразрешими сблъсъци, а hash функцията на този обект
(от тип type или function) няма нужда да зависи от "съдържанието" му (методите на класът например).
Какво мислите по въпроса?