Czy istnieje sposób na wygenerowanie identyfikatora hash-like dla obiektów w pythonie, który jest oparty wyłącznie na wartościach atrybutów obiektów? Na przykład:Generowanie unikalnego identyfikatora obiektu Pythona na podstawie jego atrybutów
class test:
def __init__(self, name):
self.name = name
obj1 = test('a')
obj2 = test('a')
hash1 = magicHash(obj1)
hash2 = magicHash(obj2)
Czego szukam to coś, w czym hash1 == hash2. Czy coś takiego istnieje w python? Wiem, że mogę przetestować, czy jest to obj1.name == obj2.name, ale szukam czegoś ogólnego, którego mogę użyć na dowolnym obiekcie.
Nie można zagwarantować, że będzie wyjątkowy. –
@Bastien, masz rację. Ale to naprawdę zależy od aplikacji. Dla wielu przypadków hash może wystarczyć. –
Nie zaleca się zwracania czegokolwiek z __hash __ (self) oprócz int (http://docs.python.org/reference/datamodel.html#object.__hash__), ponieważ spowoduje to renderowanie obiektu z pozoru ale niepoprawnie hashable (jak w używane w dyktach) – SingleNegationElimination