gpt4 book ai didi

python - 类型错误 : object() takes no parameters after defining __new__

转载 作者:IT老高 更新时间:2023-10-28 20:52:57 25 4
gpt4 key购买 nike

我真的不明白这段代码的错误在哪里:

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")

它给了我错误:

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

最佳答案

在 Python 3.3 及更高版本中,如果您同时覆盖 __new____init__,则需要避免将任何额外参数传递给 object 您要覆盖的方法。如果您只覆盖其中一种方法,则允许将额外的参数传递给另一种方法(因为这通常在没有您帮助的情况下发生)。

因此,要修复您的类,请更改 __new__ 方法,如下所示:

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!

关于python - 类型错误 : object() takes no parameters after defining __new__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34777773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com