Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pyOpIhOI 41 of 174 menu
◀ ▶

Оператор isinstance и наследование в ООП в Python

Давайте разберем особенности наследования при использовании функции isinstance. Пусть у нас есть родительский класс и дочерний:

# Родительский класс: class ParentClass: pass # Дочерний класс: class ChildClass(ParentClass): pass

Создадим объект дочернего класса:

obj = ChildClass()

Проверим теперь с помощью isinstance, принадлежит ли наш объект классу ParentClass и классу ChildClass:

print(isinstance(obj, ChildClass)) # выведет True print(isinstance(obj, ParentClass)) # тоже выведет True

Как вы видите из примера - функция isinstance не делает различия при проверке между родительскими и дочерними классами.

Не путайтесь - если объект будет действительно родительского класса то, конечно же, проверка на принадлежность к дочернему классу вернет False:

obj = ParentClass() # объект родительского класса print(isinstance(obj, ParentClass)) # выведет True print(isinstance(obj, ChildClass)) # выведет False

Сделайте класс User с публичными свойствами name и surname.

Сделайте класс Employee, который будет наследовать от класса User и добавлять свойство salary.

Сделайте класс City с публичными свойствами name и population.

Создайте 3 объекта класса User, 3 объекта класса Employee, 3 объекта класса City, и в произвольном порядке запишите их в массив arr.

Переберите циклом массив arr и выведите на экран столбец свойств name тех объектов, которые принадлежат классу User или потомку этого класса.

Переберите циклом массив arr и выведите на экран столбец свойств name тех объектов, которые не принадлежат классу User или потомку этого класса.

Переберите циклом массив arr и выведите на экран столбец свойств name тех объектов, которые принадлежат именно классу User, то есть не классу City и не классу Employee.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить