Python中super()和super(className,self)之间的区别

时间:2019-01-12 18:44:15

标签: python python-3.x class inheritance

我的代码如下:

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的调用之间有什么区别?使用这两种方法的利弊是什么?

1 个答案:

答案 0 :(得分:3)

在Python 2中,只能使用super(className,self)语法。由于它是最常用的版本,因此自Python 3起,不提供任何参数将起到相同的作用。

  

super有两个典型的用例。在具有单继承的类层次结构中,super可以用于引用父类而无需显式命名它们,从而使代码更易于维护