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.proton
Soit 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)
Explication
Actuellement, si nous comparons un proton et un ion hydrogène (
Proton() == Ion('{H+}')) cela renvoieFalse.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.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.
Soit on compare seulement le nombre de proton dés qu'un proton et un ion sont comparés entre eux.