Module. _ _ init _ _ ()最多接受2个参数(给定3个)

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

我做错了什么?

188228 次浏览

发生错误是因为 Object是一个模块,而不是一个类。

将您的导入声明更改为:

from Object import ClassName

以及你的类定义:

class Visitor(ClassName):

将类定义更改为:

class Visitor(Object.ClassName):
etc

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

from Object import Object as Parent

以及你的类定义:

class Visitor(Parent):

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

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

初始 GeoJsonResponse 类:

from pyexample.responses import Response


class GeoJsonResponse(Response):


def __init__(self, geo_json_data):

看起来不错。没有问题,直到你尝试调试的东西,这是当你得到一堆似乎模糊的错误消息,像下面这样:

从 pyexample.response 导入 GeoJsonResponse . . 举例回答 geojsonresponse.py : 12: in (模块) 类 GeoJsonResponse (响应) :

模块()最多接受2个参数(给定3个)

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

收集测试/test _ gejson.py _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 收集测试/test _ gejson.py _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Test _ Geojson. py: 2: in (module) 来自 pyexample.response 导入 GeojsonResponse. . pyexample 响应 GeoJsonResponse.py : 12: in (module)

类 GeoJsonResponse (响应) : 模块()最多接受2个参数(给定3个)

ERROR: not found: Pyexampletesttest _ gejson. py: : TestGeoJson: : test _ api _ response 错误: 未找到: Pyexampletesttest _ gejson. py: : TestGeoJson: : test _ api _ response

C: Python 37 lib site-package aenum _ _ init _ _. py: 163

(在任何[]中都没有名称‘ PyExampletesttest _ Geojson.py: : TestGeoJson: : test _ api _ response’)

这些错误正在尽最大努力为我指明正确的方向,而@Mickey Perlstein 的回答非常准确,我只花了一分钟就把它们放在了我自己的语境中:

我进口的是 单元:

from pyexample.responses import Response

当我应该进口 类别的时候:

from pyexample.responses.Response import Response

希望这对某些人有所帮助。(容我辩解一下,现在还为时尚早。)

from Object import Object

或者

From Class_Name import Class_name

如果 Object 是 .py文件。

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

import logging
class UserdefinedLogging(logging):

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

在这个特定的示例中,我必须简单地继承日志记录模块,以便为日志记录创建一个额外的类。