TypeError: object.__new__() takes exactly one argument (the type to instantiate)
时间: 2024-05-17 15:13:39 浏览: 75
这个错误通常是因为在创建类的实例时,给了太多或太少的参数。在 Python 中,创建类的实例时,实际上是调用该类的__new__()方法来创建实例的。__new__()方法的第一个参数通常是类本身(即 cls),而不是实例。如果你在创建实例时给了多余的参数,Python 将会把这些参数传递给__new__()方法,导致出现这个错误。
如果你在创建实例时只给了一个参数,那么可能是你忘记将类本身作为第一个参数传递给__new__()方法了。你可以检查一下你的代码,确保你正确地调用了__new__()方法,并且传递了正确的参数。如果问题仍然存在,你可以尝试从更详细的错误信息中获取更多的上下文信息,以帮助你更好地理解这个错误。
相关问题
TypeError: object.__init__() takes exactly one argument (the instance to initialize)是什么原因
这个错误通常是因为你在定义一个类时,在 `__init__` 方法中传入了错误的参数个数。
在Python中,`__init__` 方法的第一个参数必须是 `self`,它代表类的一个实例。其他的参数是可选的,你可以自由定义。
例如,下面的代码会引发这个错误:
```python
class MyClass:
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
```
这个错误的原因是 `__init__` 方法定义了两个参数,但是在实例化时没有传入任何参数,所以导致了参数个数不匹配的错误。
正确的写法应该是:
```python
class MyClass:
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
my_object = MyClass("argument 1", "argument 2")
```
在实例化时,我们传入了两个参数,这样就不会出现这个错误了。
super(CityScapes, self).__init__(*args, **kwargs) TypeError: object.__init__() takes exactly one argument (the instance to initialize)
这个错误通常是由于子类的构造函数没有正确地调用父类的构造函数而导致的。
在 Python 中,当你创建一个子类时,它默认继承了父类的构造函数。如果你在子类中重写了构造函数,你需要使用 `super()` 函数来调用父类的构造函数。
在这个错误中,你需要在子类的构造函数中使用 `super()` 函数来调用父类的构造函数,以确保父类的初始化被正确执行。
例如,如果你的子类名为 `CityScapes`,你的构造函数可以这样实现:
```python
class CityScapes(ParentClass):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 子类特有的初始化代码
```
这样做会调用父类的构造函数,并将传递给子类的参数传递给父类。
阅读全文