У меня есть несколько простых классов, которые довольно простые, и хочется сделать их ключами dict.
Придумал вот такой вот кривой велосипед, интересует "как лучше/принято".
#наследник должен определить функцию subst, которая вернёт "хешозаменитель" :)
class Hashable:
def __cmp__(self, other):
if (self.subst() < other.subst()):
return -1;
if (self.subst() > other.subst()):
return +1
return 0
def __hash__(self):
return self.subst().__hash__()
( Collapse )
Я нашёл в документации __as_immutable__ и __as_temporarily_immutable__, но не понял чем они отличаются, рекомендуются ли для использования пользователем, есть ли у них какие-нибудь caveats.
Наивная попытка сделать
class point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __as_immutable__(self):
return (self.x, self.y)