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

ID:20194 / 打印

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 单元测试中遇到 AttributeError: 'TestEmployee' object has no attribute 'employee',怎么办?
下一篇: 如何从配置文件读取正则表达式并进行匹配操作?

作者:admin @ 24资源网   2025-01-14

本站所有软件、源码、文章均有网友提供,如有侵权联系308410122@qq.com

与本文相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。