我有以下代码。在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
答案 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)
则应该有效。