Module (63%)
Section (17%)

Наследование: 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()
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×