Skip to content

Egalité entre un proton et un ion hydrogène #3

@4surix

Description

@4surix

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions