By definition, we cannot instantiate an abstract class:
>>> import abc
>>> class A(abc.ABC):
... @abc.abstractmethod
... def f(self): raise NotImplementedError
...
>>> A()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't instantiate abstract class A with abstract method f
So isn’t it a contradiction that an instance of a concrete subclass is an instance of the abstract class?
>>> class B(A):
... def f(self): return 'foo'
...
>>> isinstance(B(), A)
True