登录
首页 >  文章 >  python教程

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

时间:2024-11-06 16:28:02 281浏览 收藏

本篇文章向大家介绍《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”如何解决?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>