跳到内容

带有参数的 super 调用 (UP008)

源自 pyupgrade linter。

有时提供修复。

作用

检查传递冗余参数的 super 调用。

为什么这不好?

在 Python 3 中,当:(1)第一个参数是 __class__,并且(2)第二个参数等效于封闭方法的第一个参数时,可以不带任何参数调用 super

如果可能,省略 super 的参数,以使代码更简洁且更易于维护。

示例

class A:
    def foo(self):
        pass


class B(A):
    def bar(self):
        super(B, self).foo()

建议改为

class A:
    def foo(self):
        pass


class B(A):
    def bar(self):
        super().foo()

修复安全性

此规则的修复被标记为不安全,因为从调用中删除参数可能会删除附加到参数的注释。

预览 中,如果没有注释,则该修复被标记为安全。

参考