不可靠的可调用检查 (B004)
源自 flake8-bugbear linter。
有时提供修复。
作用
检查是否使用 hasattr
来测试对象是否可调用(例如,hasattr(obj, "__call__")
)。
为什么这不好?
使用 hasattr
是一种不可靠的机制来测试对象是否可调用。如果 obj
实现了自定义的 __getattr__
,或者其 __call__
本身不可调用,您可能会得到误导性的结果。
相反,使用 callable(obj)
来测试 obj
是否可调用。
示例
建议改为
修复安全性
如果 hasattr
调用表达式中有注释,则此规则的修复被标记为不安全,因为注释可能会被删除。
例如,在以下情况下,修复将被标记为不安全