TypeError: super() argument 1 must be a type, not Maxpool
时间: 2024-09-24 12:29:49 浏览: 42
解决Python中报错TypeError: must be str, not bytes问题
3星 · 编辑精心推荐
这个错误通常发生在Python的继承体系中,当你试图使用`super()`函数创建一个新的实例,但传递给它的第一个参数不是一个类型(即不是父类或其基类),而是实例本身(在这个例子中是`Maxpool`)。`super()`函数用于调用父类的方法,它期望的第一个参数是一个类,表示你要向上查找的对象的超类。
例如,在Python的类定义中,如果你有:
```python
class Parent:
def __init__(self):
super().__init__()
class Maxpool(Parent): # 错误的地方
pass
maxpool_instance = Maxpool()
```
这里`maxpool_instance`是一个`Maxpool`实例而不是类,所以在`__init__`方法中调用`super().__init__()`会抛出TypeError。
修复这个问题,你应该确保`Maxpool`类的构造函数正确地调用了父类的构造函数,应该像这样:
```python
class Maxpool(Parent):
def __init__(self):
super(Maxpool, self).__init__() # 更正后的调用
```
或者去掉`super()`,如果`Parent`类没有明确需要初始化的行为:
```python
class Maxpool(Parent):
pass
```
阅读全文