unreliable-callable-check (B004)
Derived from the flake8-bugbear linter.
Fix is sometimes available.
What it does
Checks for uses of hasattr
to test if an object is callable (e.g.,
hasattr(obj, "__call__")
).
Why is this bad?
Using hasattr
is an unreliable mechanism for testing if an object is
callable. If obj
implements a custom __getattr__
, or if its __call__
is itself not callable, you may get misleading results.
Instead, use callable(obj)
to test if obj
is callable.
Example
Use instead: