Python 实例化对象时报错“TypeError: init() takes 2 positional arguments but 3 were given”如何解决?

python 实例化对象时报错“typeerror: init() takes 2 positional arguments but 3 were given”如何解决?

Python 实例化对象时报错的解决方法

在实例化对象过程中,可能会遇到这样的错误提示:TypeError: init() takes 2 positional arguments but 3 were given。这表明该错误发生在类的初始化函数 init() 中。

这种情况的原因通常是子类继承父类时,在子类的 init() 函数中传递了过多或过少的参数。在示例代码中,父类 People 使用 init() 函数初始化 height 和 money 属性,而子类 Man 使用 init() 函数初始化 age 属性。

然而,在实例化 Man 类时,却传递了 age 和 parent class 的 height 和 money 参数,导致 init() 函数接收到了 3 个参数,而它实际上只能接收 2 个参数(加上 hidden parameter self)。因此,引发了 TypeError 错误。

解决此问题的正确方法是仅传递子类特有的参数,对于父类的属性,在子类的 init() 函数中使用 super().__init__(...) 语法调用父类的 init() 函数进行初始化。

有关子类调用父类初始化方法的更详细示例,请参阅以下文章:

  • [Python 中子类调用父类的初始化方法](https://blog.csdn.net/lovemysea/article/details/78836927)

以上就是Python 实例化对象时报错“TypeError: init() takes 2 positional arguments but 3 were given”如何解决?的详细内容,更多请关注其它相关文章!