# oop/class.issubclass.isinstance.py from class_inheritance import Car, RaceCar, F1Car car = Car() racecar = RaceCar() f1car = F1Car() cars = [(car, 'car'), (racecar, 'racecar'), (f1car, 'f1car')] car_classes = [Car, RaceCar, F1Car] for car, car_name in cars: for class_ in car_classes: belongs = isinstance(car, class_) msg = 'is a' if belongs else 'is not a' print(car_name, msg, class_.__name__) """ Prints: Starting engine Engine for car Car... Wroom, wroom! Starting engine V8Engine for car RaceCar... Wroom, wroom! Starting engine ElectricEngine for car CityCar... Wroom, wroom! Starting engine V8Engine for car F1Car... Wroom, wroom! car is a Car car is not a RaceCar car is not a F1Car racecar is a Car racecar is a RaceCar racecar is not a F1Car f1car is a Car f1car is a RaceCar f1car is a F1Car """ print('-' * 60) for class1 in car_classes: for class2 in car_classes: is_subclass = issubclass(class1, class2) msg = '{0} a subclass of'.format( 'is' if is_subclass else 'is not') print(class1.__name__, msg, class2.__name__) """ Prints: Car is a subclass of Car Car is not a subclass of RaceCar Car is not a subclass of F1Car RaceCar is a subclass of Car RaceCar is a subclass of RaceCar RaceCar is not a subclass of F1Car F1Car is a subclass of Car F1Car is a subclass of RaceCar F1Car is a subclass of F1Car """