• [^] # Re: Petite bizarrerie à noter

    Posté par (site web personnel, Mastodon) . En réponse au journal écrire du code dans le corps d'une classe python. Évalué à 3.

    Ce n’est pas déconcertant, tu as fait une erreur : x n’est pas défini dans la fonction mais dans la classe C.

    L’objet de classe C créé est passé en paramètre sous le nom de self, et donc pour retourner le membre x de self il faut retourner self.x.

    In [3]: class C:
     ...: x = 0
     ...: def meth(self):
     ...: return self.x
     ...: C().meth()
    Out[3]: 0
    

    C’est un autre comportement qui serait déconcertant.

    Le nom self n’est qu’une convention, tu peux faire ça si tu veux:

    In [4]: class C:
     ...: x = 0
     ...: def meth(toto):
     ...: return toto.x
     ...: C().meth()
    Out[4]: 0
    

    Le fonction meth ne connait que l’objet créé de classe C, quelque soit le nom donné à cet objet.

    C’est tout à fait normal qu’il faille accéder à cet objet de classe C pour accéder à x.

    ce commentaire est sous licence cc by 4 et précédentes