unnecessary-dunder-call (PLC2801)
源自 Pylint 代码检查工具。
有时提供修复。
此规则不稳定且处于预览状态。使用需要 --preview
标志。
作用
检查对dunder方法(例如__str__
和__add__
)的显式使用。
为什么这不好?
Dunder名称不应被显式调用,并且在大多数情况下,可以替换为内置函数或运算符。
修复安全性
此修复始终是不安全的。当将dunder方法调用替换为运算符或内置函数时,行为可能会以下列方式更改
-
类型可能仅实现相关dunder方法的子集。直接调用缺少的dunder方法将返回
NotImplemented
,但是使用等效运算符会引发TypeError
。 -
实例分配的dunder方法将被运算符和内置函数忽略。
-
即使使用内置类型,行为也可能有所不同。
示例
three = (3.0).__str__()
twelve = "1".__add__("2")
def is_greater_than_two(x: int) -> bool:
return x.__gt__(2)
建议改为