我不太明白在继承时调用super
类方法时是否需要self
参数,因为我在使用它时遇到了重复参数定义错误的问题。
代码基本上是:
class MyClass(ParentClass):
def method(self, arg=None):
arg=f(arg)
super(MyClass, self).method(self, arg=None)
在super
调用中使用self
,我得到:
TypeError:method()为关键字参数"arg"`获取了多个值
如果没有,它似乎有效,但我不知道我是否会错过我需要的任何副作用。是self
在super
语句中吗?
阅读文档!
以下是您应该如何使用super
:
super(MyClass, self).method(arg=None)
您必须将self
传递给super
调用,而不是方法调用。
此外,如果您使用的是Python3,它甚至更简单:
super().method(arg=None)
不要在method
的参数中显式提供self,这是不需要的。
在python 2中,在super
的参数中仍然需要它。请注意,在python3中,这只是super()
。