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
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique