我在名为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
我做错了什么?
答案 0 :(得分:196)
您的错误正在发生,因为Object
是一个模块,而不是一个类。所以你的继承是棘手的。
将您的import语句更改为:
from Object import ClassName
并将您的班级定义为:
class Visitor(ClassName):
或
将您的班级定义更改为:
class Visitor(Object.ClassName):
etc
答案 1 :(得分:3)
您也可以在Python 3.6.1中执行以下操作
from Object import Object as Parent
并将您的班级定义为:
class Visitor(Parent):
答案 2 :(得分:1)
from Object import Object
或
From Class_Name import Class_name
如果Object是.py
文件。
答案 3 :(得分:0)
即使在@Mickey Perlstein的回答和他3个小时的侦探工作之后,我仍然花了几分钟才将其应用于我自己的烂摊子。如果有人像我一样需要更多帮助,这就是我的情况。
GeoJsonResponse初始类:
from pyexample.responses import Response
class GeoJsonResponse(Response):
def __init__(self, geo_json_data):
看起来不错。在尝试调试事物之前,没有问题,那就是当您收到一堆看似模糊的错误消息时:
来自pyexample.responses的导入GeoJsonResponse .. \ pyexample \ responses \ GeoJsonResponse.py:12:in(模块) 类GeoJsonResponse(Response):
E TypeError:module()最多接受2个参数(给定3个参数)
==================================错误============ =======================
___________________收集测试错误/test_geojson.py ____________________
test_geojson.py:2:在(模块)中 从pyexample.responses中导入GeoJsonResponse .. \ pyexample \ responses \ GeoJsonResponse.py:12:在(模块)中
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
当我应该导入 class 时:
from pyexample.responses.Response import Response
希望这对某人有帮助。 (以我的辩护,还很早。)
答案 4 :(得分:0)
在遇到问题的情况下,当我尝试扩展类时,我指的是模块。
{!! Form::file('motivation', ['id' => 'inputGroupMotivation', 'class' => 'custom-file-input']) !!}
如果查看文档信息,您将看到“日志记录”显示为模块。
在这种特定情况下,我必须简单地继承日志记录模块才能为日志记录创建一个额外的类。