【发布时间】:2019-06-07 08:03:21
【问题描述】:
我的代码被剪断了:
class A:
def test(self):
return 'A'
class B(A):
def test(self):
return 'B->' + super(B, self).test()
print(B().test())
输出:B->A
如果我写这样的东西,那么我会得到相同的输出:
class A:
def test(self):
return 'A'
class B(A):
def test(self):
return 'B->' + super().test() # change to super()
print(B().test())
在这两种情况下,我都会得到相同的输出。那我想知道super这两种调用方式有什么区别?使用它们的优缺点是什么?
【问题讨论】:
-
没有区别 - 语法糖。
-
@wim:嗯,是的,有很大的不同,见Why is Python 3.x's super() magic?。 通常没关系,但
super(B, self)查找B晚。 -
我知道,但实现的复杂性与这个问题无关。
标签: python python-3.x class inheritance