TypeError: module.__init__() 最多接受 2 个参数(给定 3 个)
Posted
技术标签:
【中文标题】TypeError: module.__init__() 最多接受 2 个参数(给定 3 个)【英文标题】:TypeError: module.__init__() takes at most 2 arguments (3 given) 【发布时间】:2013-01-13 01:46:29 【问题描述】:我在一个名为Object.py
的文件中定义了一个类。当我尝试从另一个文件中的此类继承时,调用构造函数会引发异常:
TypeError: module.__init__() takes at most 2 arguments (3 given)
这是我的代码:
import Object
class Visitor(Object):
pass
instance = Visitor() # this line throws the exception
我做错了什么?
【问题讨论】:
您能选择提供的答案吗?它似乎是正确的,并且允许其他问题作为您的欺骗而被关闭。 嘿@wakamdr,重复问题功能非常有用。我的回答不正确有什么原因吗? 不需要接受其他问题的答案即可将其作为与此问题重复的问题。 【参考方案1】:您的错误正在发生,因为Object
是一个模块,而不是一个类。所以你的继承很麻烦。
将您的导入语句更改为:
from Object import ClassName
和你的类定义:
class Visitor(ClassName):
或
将您的类定义更改为:
class Visitor(Object.ClassName):
etc
【讨论】:
如果完全省略ClassName
,它的工作原理是否相同?喜欢class Visitor()
?
@VMAtm:你为什么不试试看。 Python 的伟大之处在于它有解释器。非常适合快速实验
天才。世界上最差的错误线。我花了 3 个小时才弄清楚我使用的是模块而不是课程。 #$%^$%&$%&
为了让 Java 用户更清楚这一点,文件是 Object,类是 ClassName。在 Python 中,文件是一个模块,文件中的类定义是类。
就是这样。它挽救了一天。【参考方案2】:
即使在@Mickey Perlstein 的回答和他 3 小时的侦探工作之后,我仍然花了几分钟时间将其应用到我自己的烂摊子上。如果其他人像我一样需要更多帮助,这就是我的情况。
responses 是一个模块 Response 是响应模块中的基类 GeoJsonResponse 是从 Response 派生的新类初始 GeoJsonResponse 类:
from pyexample.responses import Response
class GeoJsonResponse(Response):
def __init__(self, geo_json_data):
看起来不错。在您尝试调试之前没有问题,即当您收到一堆看似模糊的错误消息时:
从 pyexample.responses 导入 GeoJsonResponse ..\pyexample\responses\GeoJsonResponse.py:12:在(模块) 类 GeoJsonResponse(响应):
E TypeError: module() 最多接受 2 个参数(给定 3 个)
==================================== 错误=========== ==========================
___________________ 错误收集测试/test_geojson.py ____________________
test_geojson.py:2: 在(模块) 从 pyexample.responses 导入 GeoJsonResponse ..\pyexample\responses \GeoJsonResponse.py:12: 在(模块)
类 GeoJsonResponse(响应): E TypeError: module() 最多接受 2 个参数(给定 3 个)
错误:未找到:\PyExample\tests\test_geojson.py::TestGeoJson::test_api_response
C:\Python37\lib\site-packages\aenum__init__.py:163
(在任何 [] 中没有名称 'PyExample\tests\test_geojson.py::TestGeoJson::test_api_response')
这些错误正在尽最大努力为我指明正确的方向,而@Mickey Perlstein 的回答很到位,我只花了一分钟就将它们放在我自己的上下文中:
我正在导入 模块:
from pyexample.responses import Response
当我应该导入 类时:
from pyexample.responses.Response import Response
希望这对某人有所帮助。 (在我看来,现在还为时过早。)
【讨论】:
这与问题有什么关系? 我遇到了同样的问题,这对我有帮助,谢谢!【参考方案3】:from Object import Object
或
From Class_Name import Class_name
如果 Object 是 .py
文件。
【讨论】:
【参考方案4】:您还可以在 Python 3.6.1 中执行以下操作
from Object import Object as Parent
和你的类定义:
class Visitor(Parent):
【讨论】:
【参考方案5】:在我遇到问题的情况下,当我尝试扩展类时,我指的是一个模块。
import logging
class UserdefinedLogging(logging):
如果您查看文档信息,您会看到“日志记录”显示为模块。
在这种特定情况下,我必须简单地继承日志记录模块来为日志记录创建一个额外的类。
【讨论】:
这可以作为评论,而不是回答。请仅在您认为可以解决问题的情况下回答。 很抱歉。我是积极使用 *** 的新手,对网站的网络礼节不太熟悉。以上是关于TypeError: module.__init__() 最多接受 2 个参数(给定 3 个)的主要内容,如果未能解决你的问题,请参考以下文章
配置webpack loader vue 报错:Module build failed: TypeError: this._init is not a function
Flask - TypeError:__ init __()缺少2个必需的位置参数:'name'和'user_id'
python继承初始化对象实例时 TypeError: module() takes at most 2 arguments (3 given)
TypeError: __init__() 得到了一个意外的关键字参数“评分”