ch06
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# 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
|
||||
"""
|
||||
Reference in New Issue
Block a user