53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
# 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
|
|
"""
|