How do I check (at runtime) if one class is a subclass of another?

assert, python, subclass

Solution

You can use `issubclass()` like this `assert issubclass(suit, Suit)`.

Problem

Let's say that I have a class Suit and four subclasses of suit: Heart, Spade, Diamond, Club. ``` class Suit: ... class Heart(Suit): ... class Spade(Suit): ... class Diamond(Suit): ... class Club(Suit): ... ``` I have a method which receives a suit as a parameter, which is a class object, not an instance. More precisely, it may receive only one of the four values: Heart, Spade, Diamond, Club. How can I make an assertion which ensures such a thing? Something like: ``` def my_method(suit): assert(suit subclass of Suit) ... ``` I'm using Python 3.

Original source

Related problems