Python TypeError:module.\uuuuu init\uuuuuu()最多接受2个参数(给定3个)
我在名为Python TypeError:module.\uuuuu init\uuuuuu()最多接受2个参数(给定3个),python,python-3.x,inheritance,typeerror,Python,Python 3.x,Inheritance,Typeerror,我在名为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 我做错了什么?发生错误是因为对象是模
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
我做错了什么?发生错误是因为
对象是模块,而不是类。所以你的继承权有问题
将导入语句更改为:
from Object import ClassName
以及您的类定义:
class Visitor(ClassName):
class Visitor(Object.ClassName):
etc
class Visitor(Parent):
或
将类定义更改为:
class Visitor(ClassName):
class Visitor(Object.ClassName):
etc
class Visitor(Parent):
您也可以在Python3.6.1中执行以下操作
from Object import Object as Parent
以及您的类定义:
class Visitor(ClassName):
class Visitor(Object.ClassName):
etc
class Visitor(Parent):
即使在@Mickey Perlstein的回答和他3个小时的侦探工作之后,我还是花了几分钟的时间来处理我自己的混乱。如果其他人和我一样,需要更多的帮助,以下是我的情况
- 回答是一个模块
- Response是responses模块中的基类
- GeoJsonResponse是从Response派生的一个新类
初始GeoJsonResponse类:
from pyexample.responses import Response
class GeoJsonResponse(Response):
def __init__(self, geo_json_data):
看起来不错。在您尝试调试之前,不会出现任何问题,当您收到一堆看似模糊的错误消息时,如下所示:
从pyexample.response导入GeoJsonResponse
..\pyexample\responses\GeoJsonResponse.py:12:in(模块)
类GeoJsonResponse(响应):
E TypeError:module()最多接受2个参数(给定3个)
===================================================错误====================================
___________________收集测试/test\u geojson.py\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
test_geojson.py:2:in(模块)
从pyexample.responses导入GeoJsonResponse..\pyexample\responses\GeoJsonResponse.py:12:in(模块)
类GeoJsonResponse(响应):
E TypeError:module()最多接受2个参数(给定3个)
错误:未找到:\PyExample\tests\test\u geojson.py::TestGeoJson::test\u api\u response
C:\Python37\lib\site packages\aenum\uuuuu init\uuuuuu.py:163
(在任何[]中都没有名称“PyExample\tests\test_geojson.py::TestGeoJson::test_api_response”)
错误尽了最大的努力为我指明了正确的方向,@Mickey Perlstein的答案完全正确,我花了一分钟的时间在我自己的背景下把所有这些都放在一起:
我正在导入模块:
from pyexample.responses import Response
from pyexample.responses.Response import Response
当我应该导入类时:
from pyexample.responses import Response
from pyexample.responses.Response import Response
希望这对别人有帮助。(为我辩护,现在还早。)
或
如果对象是.py
文件。在我遇到问题的情况下,我在尝试扩展类时引用的是一个模块
import logging
class UserdefinedLogging(logging):
如果您查看文档信息,您将看到“日志记录”显示为模块
在这个特定的例子中,我必须简单地继承日志模块,为日志创建一个额外的类。如果完全省略ClassName
,它是否也可以工作?比如class Visitor()
?@VMAtm:为什么不试试看呢。Python很棒,因为它有解释器。非常适合快速实验天才。世界上最严重的错误线。我花了3个小时才发现我使用的是模块而不是类。#$%^$%&$%&为了让Java用户更清楚地了解这一点,文件是Object,类是ClassName。在Python中,文件是一个模块,文件中的类定义是类,就是这样。它节省了时间。请选择提供的答案好吗?它似乎是正确的,并允许其他问题作为你的重复关闭。嘿@wakamdr重复问题功能非常有用。我的答案不正确有什么原因吗?其他问题的答案不需要被接受,也可以作为这个问题的副本关闭。这与问题有什么关系?这可以作为评论,而不是答案。如果你认为它能解决问题,请回答。对此表示抱歉。我是一个新的积极使用stackoverflow,我不太熟悉该网站的网络礼仪。