1

我有以下代码。在 sublcasC中,我注释掉了一条运行良好的行。我想知道如何使用super带参数的关键字。我在下面的那个不起作用,它也被注释掉了。这里有任何建议。谢谢

class A:
 def __init__(self, val):
        self.a = val


class B(A):
  pass

class C(A):
  def __init__(self, val):
        #A.__init__(self, val)
        #super(C,self,val).__init__() -- This does not work;
        self.a += val

print A(4).a
print B(5).a
print C(6).a
4

1 回答 1

0

在第二个中,您需要传递val给函数__init__()

在您调用的工作中注意A.__init__(self, val)

而在非工作状态中,您将所有这些都放在super()调用中:super(C,self,val).__init__() 这样做的原因是该函数A.__init__()需要2 个参数,即对象本身和一个参数val。但你只是selfsuper()方法上给出了它。super 中的参数val什么都不做,因为 super 本身只需要 2 个参数。

如果您将其更改为super(C,self).__init__(val)它应该可以工作。

于 2013-09-27T04:12:36.970 回答