gpt4 book ai didi

python - __new__ 方法给出错误对象。__new__() 只需要一个参数(要实例化的类型)

转载 作者:行者123 更新时间:2023-12-03 18:28:43 25 4
gpt4 key购买 nike

为什么下面的代码会出错?

class Foo:
def __new__(cls, *args, **kwargs):
print("Creating Instance")
instance = super(Foo, cls).__new__(cls,*args, **kwargs)
return instance

def __init__(self, a, b):
self.a = a
self.b = b

z= Foo(2,3)

它给出了以下错误
TypeError: object.__new__() takes exactly one argument (the type to instantiate)

最佳答案

    instance = super(Foo, cls).__new__(cls,*args, **kwargs)

是正确的。但是,您有责任首先删除您的类引入的参数,以便当 object.__new__最终被称为,两者 *args**kwargs是空的。

你的代码应该是这样的
class Foo:
def __new__(cls, a, b, *args, **kwargs):
print("Creating Instance")
instance = super(Foo, cls).__new__(cls, *args, **kwargs)
return instance

def __init__(self, a, b, *args, **kwargs):
super().__init__(*args, **kwargs)
self.a = a
self.b = b

此定义删除您的新参数 ab来自 args在将其传递给 MRO 的下一个人之前。同样对于 __init__ .

关于python - __new__ 方法给出错误对象。__new__() 只需要一个参数(要实例化的类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59217884/

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