The obvious solution to the problem is to use issubclass, but this raises TypeError (using Python 3.6.7), e.g. Answer For more on the topic of python Protocols, see https://mypy.readthedocs.io/en/latest/protocols.html#using-isinstance-with-protocols In Python 3.6.7, one way to solve this is to use the @runtime_checkable decorator: