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