如何在python中的子类中使用参数调用super关键字?

时间:2013-09-27 04:11:19

标签: python inheritance super

我有以下代码。在sublcass C中,我已经注释掉一条工作正常的线。我想知道如何使用带参数的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

1 个答案:

答案 0 :(得分:0)

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

请注意您在工作中致电A.__init__(self, val)

在非工作中你把所有这些都放在super()电话中:super(C,self,val).__init__() 这不是因为函数A.__init__()需要 2 参数,对象本身和参数val。但是你只是从self方法中给它super()。 super中的参数val没有任何作用,因为super本身只需要2个参数。

如果将其更改为super(C,self).__init__(val)则应该有效。