Наследование: issubclass()
Python предлагает функцию, которая способна идентифицировать отношения между двумя классами, и, хотя ее диагностика не очень сложна, она может проверить, является ли определенный класс подклассом любого другого класса.
Вот как это выглядит:
issubclass(ClassOne, ClassTwo)
Функция возвращает True, если ClassOne
является подклассом ClassTwo
или False в противном случае.
Давайте посмотрим на это в действии - это может Вас удивить. Посмотрите код в редакторе. Прочитайте внимательно.
Есть два вложенных цикла. Их цель - проверить все возможные упорядоченные пары классов и распечатать результаты проверки, чтобы определить, соответствует ли пара отношению подкласс-суперкласс.
Запустите код. Программа выдает следующий вывод:
True False False
True True False
True True True
output
Давайте сделаем результат более читабельным:
↓ Подкласс класса → | Vehicle | LandVehicle | TrackedVehicle |
---|---|---|---|
Vehicle | True | False | False |
LandVehicle | True | True | False |
TrackedVehicle | True | True | True |
Необходимо сделать одно важное замечание: каждый класс считается подклассом самого себя.
Code
class Vehicle:pass
class LandVehicle(Vehicle):
pass
class TrackedVehicle(LandVehicle):
pass
for cls1 in [Vehicle, LandVehicle, TrackedVehicle]:
for cls2 in [Vehicle, LandVehicle, TrackedVehicle]:
print(issubclass(cls1, cls2), end="\t")
print()