["python","subclass","assert"]
How do I check (at runtime) if one class is a subclass of another?

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.
You can use issubclass(), but the given example has suit passed as an instance. You'll need to pass the instance's class to issubclass() (or you will receive the error TypeError: issubclass() arg 1 must be a class ) assert issubclass(suit.__class__, Suit) or just use isinstance() : assert isinstance(suit, Suit)