Partage
  • Partager sur Facebook
  • Partager sur Twitter

Constructeur class

    13 janvier 2023 à 15:34:48

    Bonjour, 

    je débute sur Python et j'aimerai connaitre la différence entre ces deux écriture concrètement ce qui change : 

    class Portable : 

    def__init__(self, color="red"):

    self.color=color

    ET : 

    class Portable : 

            color = "red"

    Je pense que la première on peut changer la couleur rouge mais pas la deuxième non ? 

    Merci par avance , 

    • Partager sur Facebook
    • Partager sur Twitter
      13 janvier 2023 à 15:58:30

      Modif: J'ai rien dit ...

      -
      Edité par josmiley 13 janvier 2023 à 16:06:37

      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

        13 janvier 2023 à 16:01:34

        La différence est que dans le cas n°1, c'est une variable d'instance alors que le cas n°2 est une variable de classe.

        Pour en savoir plus, regarder des tutoriels sur chacun des cas.

        • Partager sur Facebook
        • Partager sur Twitter

        Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
        La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

          13 janvier 2023 à 16:55:40

          Dans le premier cas, la valeur par défaut de color est stocké dans le paramètre par défaut d'__init__ et pourra être utilisé pour créer l'attribut d'instance color. Dans le 2nd cas, color est un attribut de classe. Il sera accédé tant que l'attribut d'instance n'existe pas.

          La différence... côté résultat, il n'y en a pas trop. Après, c'est une question de style. Une classe, c'est un état dont rendent compte les attributs (de classe ou pas) et il sera plus simple d'utiliser la forme attribut de classe pour les documenter en leur donner une valeur par défaut car les paramètres optionnels d'__init__ n'ont aucune raison de devenir attributs de classe.

          Mais comme toujours, choisir l'un ou l'autre va dépendre du contexte et de la facilité à relire le code en optant pour l'un ou l'autre (ou les 2).

          • Partager sur Facebook
          • Partager sur Twitter
            14 janvier 2023 à 8:40:31

            https://medium.com/python-features/class-vs-instance-variables-8d452e9abcbd
            • Partager sur Facebook
            • Partager sur Twitter

            Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
            La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

            Constructeur class

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown