TypeError: object () no toma parámetros después de definir __new__

Realmente no entiendo dónde está el error en este pequeño código:

class Personne: def __init__(self, nom, prenom): print("Appel de la méthode __init__") self.nom = nom self.prenom = prenom def __new__(cls, nom, prenom): print("Appel de la méthode __new__ de la classe {}".format(cls)) return object.__new__(cls, nom, prenom) personne = Personne("Doe", "John") 

Este código presentado arriba me está dando el error:

 Traceback (most recent call last): File "/home/bilal/Lien vers python/21_meta_classes/1_instanciation.py", line 21, in  personne = Personne("Doe", "John") File "/home/bilal/Lien vers python/21_meta_classes/1_instanciation.py", line 14, in __new__ return object.__new__(cls, nom, prenom) TypeError: object() takes no parameters 

En Python 3.3 y __new__ posteriores, si reemplaza tanto a __new__ como a __init__ , debe evitar pasar argumentos adicionales a los métodos de object que está reemplazando. Si solo anula uno de esos métodos, se le permite pasar argumentos adicionales al otro (ya que eso suele ocurrir sin su ayuda).

Entonces, para arreglar tu clase, cambia el método __new__ así:

 def __new__(cls, nom, prenom): print("Appel de la méthode __new__ de la classe {}".format(cls)) return object.__new__(cls) # don't pass extra arguments here!