跳到内容

super-without-brackets (PLW0245)

源自 Pylint 代码检查工具。

修复总是可用的。

作用

检测尝试在不带括号的情况下使用 super

为什么这不好?

super() 可调用对象 可以在方法定义中使用,以创建一个代理对象,该对象将属性访问委托给当前类的超类。尝试访问 super 本身的属性,而不是调用 super() 返回的对象,将引发 AttributeError

示例

class Animal:
    @staticmethod
    def speak():
        return "This animal says something."


class Dog(Animal):
    @staticmethod
    def speak():
        original_speak = super.speak()  # ERROR: `super.speak()`
        return f"{original_speak} But as a dog, it barks!"

建议改为

class Animal:
    @staticmethod
    def speak():
        return "This animal says something."


class Dog(Animal):
    @staticmethod
    def speak():
        original_speak = super().speak()  # Correct: `super().speak()`
        return f"{original_speak} But as a dog, it barks!"