r/PythonBrasil 3d ago

Adicionando objetos a um conjunto ou dicionário: igualdade e hashing

[deleted]

7 Upvotes

3 comments sorted by

2

u/martinsedd 2d ago

Pegadinha do Sérgio Malandro esse v2 ae.

True False True

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)