Partage
  • Partager sur Facebook
  • Partager sur Twitter

__new__

14 janvier 2019 à 15:23:24

Bonjour,

J'ai une question concernant ce code :

class Personne:
    def __new__(cls, nom, prenom):
        print("Appel de la méthode __new__ de la classe {}".format(cls))
        # On laisse le travail à object
        return object.__new__(cls, nom, prenom)

    def __init__(self, nom, prenom):
        """Constructeur de notre personne."""
        print("Appel de la méthode __init__")
        self.nom = nom
        self.prenom = prenom
        self.age = 23
        self.lieu_residence = "Lyon"

On remarque que :
- __new__
prend en paramètre nom, prenom, qui sont envoyé en entrée de object.__new__.
- Une fois l'instance retourner par __new__, __init__ est lancée et prend aussi en paramètre nom, prenom.

Mais pourquoi nom, prenom sont envoyé en entrée de __new__ et object.__new__ ? En effet, l'initialisation des attributs est faites dans __init__ alors pourquoi object.__new__ a besoin de ces arguments?



-
Edité par adrien050356 14 janvier 2019 à 15:24:11

  • Partager sur Facebook
  • Partager sur Twitter