Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:module.\uuuuu init\uuuuuu()最多接受2个参数(给定3个)_Python_Python 3.x_Inheritance_Typeerror - Fatal编程技术网

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,我不太熟悉该网站的网络礼仪。