子类-来自超类的参数

2024-06-02 11:50:58 发布

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

我对在Python中如何在子类和超类之间传递参数有点困惑。考虑以下类结构:

class Superclass(object):
    def __init__(self, arg1, arg2, arg3):
        #Inilitize some variables
        #Call some methods

class Subclass(Superclass):
    def __init__(self):
        super(Subclass, self).__init__()
        #Call a subclass only method

我遇到的困难是理解如何在超类和子类之间传递参数。是否需要重新列出子类初始值设定项中的所有超类参数?在哪里可以指定新的、仅子类的参数?当我试图使用上面的代码来实例化一个子类时,它只需要1个参数,而不是我列出的原始4个(包括self)。

TypeError: __init__() takes exactly 1 argument (4 given)

Tags: self参数objectinitdefsomecall子类
1条回答
网友
1楼 · 发布于 2024-06-02 11:50:58

没有魔法发生!__init__方法和其他方法一样工作。您需要显式地获取子类initialiser中需要的所有参数,并将它们传递给超类。

class Superclass(object):
    def __init__(self, arg1, arg2, arg3):
        #Initialise some variables
        #Call some methods

class Subclass(Superclass):
    def __init__(self, subclass_arg1, *args, **kwargs):
        super(Subclass, self).__init__(*args, **kwargs)
        #Call a subclass only method

当您调用Subclass(arg1, arg2, arg3)时,Python将只调用Subclass.__init__(<the instance>, arg1, arg2, arg3)。它不会神奇地尝试将一些参数与超类和一些参数与子类匹配。

相关问题 更多 >