I naprawdę nie rozumiem, gdzie jest błąd w tym małym kodu:TypeError: Object() bez parametrów po zdefiniowaniu __new__
#!/usr/bin/python3
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")
Ten kod przedstawiony powyżej daje mi błąd:
Traceback (most recent call last):
File "/home/bilal/Lien vers python/21_meta_classes/1_instanciation.py", line 21, in <module>
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
FWIW, kod OP jest faktycznie działa w Python3.2, choć błąd rzeczywiście występuje w Python3.3 + – plamut
Dzięki bro, wygląda na to, że działa. proszę, powiedz mi, jak Python przekazuje resztę argumentów do __init__, czy możesz wyjaśnić mi ten proces (jeśli masz czas oczywiście)? !! – Sidahmed
Wywołanie '__init__' nie jest wywołane przez' object .__ new__', ale raczej przez 'type .__ call__' (związany z obiektem klasy). Tak więc obiekt .__ new__' nie musi wyświetlać tych samych argumentów, których oczekuje funkcja "__init__". – Blckknght