如何解决用2参数形式调用super与直接引用方法和手动传递“ self”有何不同?
一个奇怪的问题,请考虑以下代码:
class A:
def mymethod(self):
return "mymethod from class A"
class B(A):
def mymethod(self):
return "mymethod from class B"
class C(B):
# in this class I want "mymethod" to return the same string returned from mymethod in the A class,with 2 exclamation points (!!) appended
# obviously this is a simplified example with dumb logic
def mymethod(self):
ss = super(B,self).mymethod()
# OR
ss = A.mymethod(self)
return ss + " !!"
我对OOP缺乏经验,所以如果答案非常明显,请原谅。
据我所知,这两种方法之间没有区别,因此我无法理解super()
在类方法中如何有用。
解决方法
使用super(B,self)
消除了一定程度的依赖性。如果将B
的定义更改为使用其他超类,则将自动从该类中调用该方法。如果您对A.mymethod(self)
进行硬编码,则需要在重新定义B
时进行更新。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。