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 错误。

立即学习“Python免费学习笔记(深入)”;

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1351100.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 15:39:33
下一篇 2025年12月13日 15:39:38

相关推荐

发表回复

登录后才能评论
关注微信