175

我在一个名为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

我究竟做错了什么?

4

5 回答 5

285

您的错误正在发生,因为Object它是一个模块,而不是一个类。所以你的继承权很糟糕。

将您的导入语句更改为:

from Object import ClassName

和你的类定义:

class Visitor(ClassName):

或者

将您的类定义更改为:

class Visitor(Object.ClassName):
   etc
于 2013-01-29T14:07:33.603 回答
16

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

  • 响应是一个模块
  • 响应是响应模块中的基类
  • 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(Response) 中:

E TypeError: module() 最多接受 2 个参数(给定 3 个)

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

___________________ 错误收集测试/test_geojson.py ____________________

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

类 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

当我应该导入课程时:

from pyexample.responses.Response import Response

希望这可以帮助某人。(在我的辩护中,现在还为时过早。)

于 2019-04-12T11:16:02.747 回答
6
from Object import Object

或者

From Class_Name import Class_name

如果 Object 是一个.py文件。

于 2019-10-21T16:40:22.010 回答
4

您还可以在 Python 3.6.1 中执行以下操作

from Object import Object as Parent

和你的类定义:

class Visitor(Parent):
于 2017-05-09T15:47:04.570 回答
0

在我遇到问题的情况下,当我尝试扩展类时,我指的是一个模块。

import logging
class UserdefinedLogging(logging):

如果您查看文档信息,您会看到“日志记录”显示为模块。

在这种特定情况下,我必须简单地继承日志记录模块来为日志记录创建一个额外的类。

于 2020-04-15T10:01:56.413 回答