type-comparison (E721)
Derived from the pycodestyle linter.
What it does
Checks for object type comparisons using ==
and other comparison
operators.
Why is this bad?
Unlike a direct type comparison, isinstance
will also check if an object
is an instance of a class or a subclass thereof.
If you want to check for an exact type match, use is
or is not
.
Known problems
When using libraries that override the ==
(__eq__
) operator (such as NumPy,
Pandas, and SQLAlchemy), this rule may produce false positives, as converting
from ==
to is
or is not
will change the behavior of the code.
For example, the following operations are not equivalent:
import numpy as np
np.array([True, False]) == False
# array([False, True])
np.array([True, False]) is False
# False
Example
Use instead: