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


147

我在名为的文件中定义了一个类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

我究竟做错了什么?


1
您能选择提供的答案吗?它似乎是正确的,并且可以使其他问题成为您的骗子。
疯狂物理学家

1
嘿@wakamdr,重复问题功能非常有用。为什么我的答案不正确?
Sheena

将其他问题重复复制为该问题,则无需接受答案。
user2357112支持Monica18 '18

Answers:


237

发生错误是因为Object是模块,而不是类。因此,您的继承权很严格。

将您的导入语句更改为:

from Object import ClassName

和您的类定义为:

class Visitor(ClassName):

要么

将您的类定义更改为:

class Visitor(Object.ClassName):
   etc

如果ClassName完全省略,它的工作原理是否相同?喜欢class Visitor()吗?
VMAtm

1
@VMAtm:为什么不尝试并找出答案。Python的出色cos具有解释器。非常适合快速实验
-Sheena

2
天才。世界上最糟糕的错误行。我花了3个小时才弄清楚我使用的是模块而不是课程。#$%^ $%&$%&
米奇·佩尔斯坦

为了使Java用户更加清楚,文件是Object,类是ClassName。在Python中,文件是模块,文件中的类定义是类。
凯利·邦

6

即使在@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 ____________________

pyexample.responses中的test_geojson.py:2:在(模块)中导入GeoJsonResponse .. \ pyexample \ responses \ GeoJsonResponse.py:12:在(模块)中

class 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

希望这对某人有帮助。(以我的辩护,还为时过早。)


这与问题有什么关系?
Leevi L

3

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

from Object import Object as Parent

和您的类定义为:

class Visitor(Parent):

2
from Object import Object

要么

From Class_Name import Class_name

如果Object是.py文件。


0

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

import logging
class UserdefinedLogging(logging):

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

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


这可以作为评论而非回答。如果您认为可以解决问题,请只回答。
Hamza Khurshid,

对于那个很抱歉。我刚开始积极使用stackoverflow,但对网站的网络礼仪并不熟悉。
Gerardsson
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.