Python3-TypeError:module.\uu init\uuuu()最多接受2个参数(给定3个)

2024-04-29 16:16:41 发布

您现在位置:Python中文网/ 问答频道 /正文

请不要标记为重复,其他类似的问题没有解决我的问题。

这是我的设置

/main.py
/actions/ListitAction.py
/actions/ViewAction.py

主.py:

from actions import ListitAction, ViewAction

列表操作.py:

class ListitAction(object):    

    def __init__(self):        
        #some init behavior

    def build_uri():
        return "test.uri"

ViewAction.py视图

from actions import ListitAction

class ViewAction(ListitAction):

    def __init__(self, view_id):
        ListitAction.__init__(self)
        self.view_id = view_id

    def build_uri():
        return "test"

跑步:

$ python3 main.py

我收到的唯一错误消息是:

Traceback (most recent call last):
  File "/home/jlevac/workspace/project/listit.py", line 11, in <module>
    from actions import ListitAction, ViewAction, CommentsAction
  File "/home/jlevac/workspace/project/actions/ViewAction.py", line 3, in <module>
    class ViewAction(ListitAction):
TypeError: module.__init__() takes at most 2 arguments (3 given)

即使尝试使用python3控制台,也会收到相同的错误消息:

$python3
from actions import ViewAction

我是Python新手,但对编程并不陌生。我假设我的错误消息与import语句有关,但是根据消息,我无法真正理解它的含义。

谢谢


Tags: frompyimportselfviewactionsid消息
3条回答

当你不需要的时候,你就通过了self,仅此而已。
编辑:请参阅MSeifert的注释答案,因为我不想窃取内容。

如果文件位于项目的根目录中,则可以直接写入文件名并导入。

例如,如果文件名是Parent1.py,类名是Parent,则

from Parent1 import Parent

但是,如果文件Parent1.py位于任何文件夹下,例如:

DemoFolder ->  Parent1.py- >    Parent
(Folder).       (File).      (Class name)

然后你必须写:

from Test.Parent1 import Parent

您的导入是错误的,因此您试图从模块本身继承,而不是从模块内部定义的类(同名)继承。

from actions import ListitAction

ViewAction.py中应该是:

from actions.ListitAction import ListitAction

同样,所有其他用途都应该切换到from actions.XXX import XXX的显式导入(由于名称重复),例如from actions import ListitAction, ViewAction必须变成两个导入:

from actions.ListitAction import ListitAction
from actions.ViewAction import ViewAction

因为导入的类来自actions包下的不同模块。

相关问题 更多 >