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
就是这样做的),或者如果添加了更多基类,则会以其他方式改变运行时行为。