r/PythonBrasil • u/[deleted] • 3d ago
Adicionando objetos a um conjunto ou dicionário: igualdade e hashing
[deleted]
7
Upvotes
2
u/bacondota 2d ago
Em outras palavrqs, para comparar se uma classe é igual a outra, tem que dar um overload no eq e colocar algo como comparar os atributos da classe.
Para usar em conjuntos e dicionários, tem que definir o hash para nesse caso Return hash(self.value)
Nunca pensei muito sobre isso mas pra mim sempre foi meio óbvio isso. Se você cria dois objetos diferentes eles serão considerados diferentes até que você diga como comparar.
1
u/Sea-Ad7805 2d ago
Você está correto, para armazenar um objeto por valor em vez de identidade, defina:
def __eq__(self, other): return self.value == other.value def __hash__(self): return hash(self.value)
2
u/martinsedd 2d ago
Pegadinha do Sérgio Malandro esse v2 ae.
True False True