-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
Explication
Actuellement, si nous comparons un proton et un ion hydrogène (Proton() == Ion('{H+}')) cela renvoie False.
Cela est dû à la méthode spéciale de l'égalité __eq__ qui compare la représentation des objets, donc comme un proton et un ion ne se note pas pareil la comparaison renvoie faux.
def __eq__(self, obj: Any) -> bool:
return repr(self) == repr(obj)Interrogation
Je ne sais pas si il faut laisser ou corriger cela.
Techniquement un ion hydrogène est un proton, vu que si on enlève l'électron de l'hydrogène il ne reste que le proton; cependant est ce que c'est vraiment identique ?
Solution
Soit l'égalité compare dorénavant le nombre de proton d'un objet.
def __eq__(self, obj: Any) -> bool:
return self.proton == obj.protonSoit on compare seulement le nombre de proton dés qu'un proton et un ion sont comparés entre eux.
def __eq__(self, obj: Any) -> bool:
if isinstance(obj, Proton) and isinstance(obj, Ion):
return self.proton == obj.proton
else:
return return repr(self) == repr(obj)Metadata
Metadata
Assignees
Labels
No labels