抽象基类没有抽象方法 (B024)
源自 flake8-bugbear linter。
作用
检查没有抽象方法或属性的抽象类。带注释但未赋值的类变量被视为抽象的。
为什么这不好?
抽象基类用于定义接口。如果一个抽象基类没有抽象方法或属性,您可能忘记向该类添加抽象方法或属性,或者省略了 @abstractmethod
装饰器。
如果该类不打算用作接口,请考虑从类定义中删除 ABC
基类。
示例
from abc import ABC
from typing import ClassVar
class Foo(ABC):
class_var: ClassVar[str] = "assigned"
def method(self):
bar()
建议改为
from abc import ABC, abstractmethod
from typing import ClassVar
class Foo(ABC):
class_var: ClassVar[str] # unassigned
@abstractmethod
def method(self):
bar()