我对在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)
没有魔法发生!
__init__
方法和其他方法一样工作。您需要显式地获取子类initialiser中需要的所有参数,并将它们传递给超类。当您调用
Subclass(arg1, arg2, arg3)
时,Python将只调用Subclass.__init__(<the instance>, arg1, arg2, arg3)
。它不会神奇地尝试将一些参数与超类和一些参数与子类匹配。相关问题 更多 >
编程相关推荐