我已经定义了一个继承自A类的子类B.我想在B的__init__
函数中只给出一个参数.A的__init__
函数需要四个参数,这些参数是在A.的__init__
函数。我想知道这是否适用于Python 3.我的代码在某种程度上将如下所示。
class A():
__init__(self,a1,a2,a3,a4):
...
class B(A):
__init__(self,b):
...
# the arguments a1 a2 a3 a4 for the parent class are generated
a1 = ...
a2 = ...
a3 = ...
a4 = ...
# call the __init__ function of the parent class using super
super().__init__(a1,a2,a3,a4)
object = B(b0)
我复制并修改了另一个使用Python 2的人的代码。当我在Python 3中运行代码时,出现以下错误:
__init__()
缺少4个必要的位置参数:' a1',' a2',' a3'和' a4'。我想知道这是否是因为我没有在B的__init__()
中包含A所需的参数。
更新
我刚注意到有一个错字。我写了_init_(self, b)
(带有单下划线),我应该使用___init__(self, b)
(双下划线)。修复此错字后,错误没有出现。所以我的问题的答案是" no"。
答案 0 :(得分:-1)
很快,答案是否定的。这适用于Python3。除了SyntaxError
之外,您似乎没有任何错误。另外,如果您有任何疑问,请将您的代码提供为Minimal, Complete, and Verifiable example,例如:
class A:
def __init__(self, a1, a2, a3, a4):
pass
class B(A):
def __init__(self, b):
super().__init__(1,2,3,4)
A(1,2,3,4)
B(1) # no error