TypeError:module .__ init __()最多需要2个参数(给定3个)

lov*_*sus 131 python python-3.x

我在一个名为的文件中定义了一个类Object.py.当我尝试从另一个文件中继承此类时,调用构造函数会引发异常:

TypeError: module.__init__() takes at most 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

import Object

class Visitor(Object):
    pass

instance = Visitor()  # this line throws the exception
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

She*_*ena 217

您的错误正在发生,因为它Object是一个模块,而不是一个类.所以你的继承是棘手的.

将您的import语句更改为:

from Object import ClassName
Run Code Online (Sandbox Code Playgroud)

和你的班级定义:

class Visitor(ClassName):
Run Code Online (Sandbox Code Playgroud)

要么

将您的班级定义更改为:

class Visitor(Object.ClassName):
   etc
Run Code Online (Sandbox Code Playgroud)

  • @VMAtm:你为什么不尝试一下并找出答案。Python 很棒,因为它有解释器。非常适合快速实验 (3认同)
  • 天才。世界上最糟糕的错误线。我花了 3 个小时才弄清楚我使用的是模块而不是课程。#$%^$%&$%& (3认同)

Sun*_*hie 12

即使在@Mickey Perlstein 的回答和他 3 小时的侦探工作之后,我仍然花了几分钟时间将其应用到我自己的烂摊子上。如果其他人像我一样需要更多帮助,这就是我的情况。

  • 响应是一个模块
  • 响应是响应模块中的基类
  • GeoJsonResponse 是从 Response 派生的新类

初始 GeoJsonResponse 类:

from pyexample.responses import Response

class GeoJsonResponse(Response):

    def __init__(self, geo_json_data):
Run Code Online (Sandbox Code Playgroud)

看起来不错。没有问题,直到您尝试调试该事物,即当您收到一堆看似模糊的错误消息时,如下所示:

from pyexample.responses import GeoJsonResponse ..\pyexample\responses\GeoJsonResponse.py:12: 在(模块)类 GeoJsonResponse(Response) 中:

E 类型错误:module() 最多接受 2 个参数(给出 3 个)

==================================== 错误 ============== ======================

____________________ 收集测试/test_geojson.py 时出错 ____________________

test_geojson.py:2: in (module) from pyexample.responses import GeoJsonResponse ..\pyexample\responses \GeoJsonResponse.py:12: in (module)

class GeoJsonResponse(Response): 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
Run Code Online (Sandbox Code Playgroud)

当我应该导入课程时

from pyexample.responses.Response import Response
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助某人。(在我看来,现在还为时过早。)


小智 5

from Object import Object
Run Code Online (Sandbox Code Playgroud)

或者

From Class_Name import Class_name
Run Code Online (Sandbox Code Playgroud)

如果 Object 是一个.py文件。