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__() 得到了一个意外的关键字参数“评分”

TypeError: __init__() 接受 2 个位置参数,但给出了 4 个

TypeError: __init__() 接受 1 个位置参数,但给出了 3 个