meta-class-abc-meta (FURB180)
派生自 refurb 代码检查工具。
修复总是可用的。
此规则不稳定且处于预览状态。使用需要 --preview 标志。
作用
检查使用 metaclass=abc.ABCMeta 定义抽象基类 (ABC) 的情况。
为什么这不好?
使用 class C(ABC): ... 而不是 class C(metaclass=abc.ABCMeta): ... 来定义抽象基类。从 ABC 包装器类继承在语义上与设置 metaclass=abc.ABCMeta 相同,但更简洁。
示例
建议改为
修复安全性
如果该类具有基类,则此规则的修复是不安全的。 这是因为基类可能会验证该类的其他基类(例如,typing.Protocol 就是这样做的),或者如果添加了更多基类,则会以其他方式改变运行时行为。