Множественное наследование
Часть раздела Объектно-ориентированное программирование путешествия по Python на Coddy. Урок 20 из 64.
Множественное наследование позволяет классу наследовать свойства более чем от одного родительского класса, объединяя функциональность из разных источников.
Вот два родительских класса:
class Animal:
def __init__(self, name):
self.name = name
def eat(self):
return f"{self.name} is eating"
class Flyable:
def fly(self):
return f"{self.name} is flying"Создай дочерний класс, который наследуется от обоих родительских классов:
class Bird(Animal, Flyable):
def __init__(self, name, species):
super().__init__(name) # Вызывает __init__ класса Animal
self.species = species
def sing(self):
return f"{self.name} is singing"Синтаксис class Bird(Animal, Flyable): означает, что Bird наследуется и от Animal, и от Flyable.
Создай объект птицы и используй методы обоих родительских классов:
sparrow = Bird("Sparrow", "House sparrow")Вызывайте методы первого родительского класса:
print(sparrow.eat())Вызывайте методы второго родительского класса:
print(sparrow.fly())Вызови собственный метод птицы:
print(sparrow.sing())Вывод:
Sparrow is eating
Sparrow is flying
Sparrow is singingМожно проверить порядок наследования:
print(Bird.__mro__) # Порядок разрешения методовЗдесь показано, у какого родительского класса сначала проверяются методы при поиске.
Ключевой момент: при множественном наследовании используется синтаксис class Child(Parent1, Parent2):. Дочерний класс получает все методы всех родительских классов. При поиске методов Python проверяет родительские классы слева направо.
Задание
СреднеВ этом задании тебе предстоит реализовать систему классов из нескольких файлов, демонстрирующую множественное наследование на примере смартфонов. Каждый класс находится в отдельном файле, чтобы лучше организовать код.
Тебе нужно отредактировать следующие файлы:
device.py— реализовать базовый классDeviceinternet.py— реализовать базовый классInternetsmartphone.py— реализовать классSmartphone, наследующий от обоих базовых классовdriver.py— реализовать тестовые случаи, которые проверят правильность работы твоей реализации
Каждый файл содержит подробные комментарии TODO, которые шаг за шагом помогут тебе выполнить реализацию.
Попробуйте сами
# TODO: Импортируйте класс Smartphone из smartphone.py
# Создайте смартфон и проверьте его методы
# TODO: Создайте объект Smartphone с брендом "Apple" и моделью "iPhone 13"
my_phone = None
# TODO: Вызовите метод power_on() смартфона и выведите результат
# TODO: Вызовите метод connect() смартфона и выведите результат
# TODO: Вызовите метод make_call() смартфона с параметром "123-456-7890" и выведите результатВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Введение в ООПВнешние файлыКлассы и объектыПараметр selfМетодыАтрибутыМетод-конструктор (__init__)Повторение — простой калькулятор4Наследование
Основы наследованияФункция super()Переопределение методовМножественное наследованиеПорядок разрешения методовПовторение: иерархия сотрудников7Специальные методы
Введение в магические методыПерегрузка операторовМагические методы контейнеровПовторение — пользовательский список10Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн «Одиночка»Паттерн «Фабрика»Паттерн «Наблюдатель»Паттерн «Стратегия»2Декораторы
Введение в декораторыДекоратор свойстваДекоратор статического методаДекоратор метода класса5Полиморфизм
Переопределение методов: повторениеУтиная типизацияАбстрактные классы и методыПроектирование интерфейсовПовторение — калькулятор фигур8Продвинутые концепции ООП
Композиция и наследованиеМиксиныСтатические методы и методы классаДекораторы классовМенеджеры контекста11Паттерны проектирования. Часть 2
Паттерн «Команда»Паттерн «Адаптер»Паттерн «Декоратор»Паттерн «Шаблонный метод»Паттерн «Состояние»Паттерн «Компоновщик»3Свойства классов
Переменные экземпляра и классаДекораторы свойствПриватные атрибутыПовторение — менеджер банковского счёта6Инкапсуляция
Публичные, защищённые и приватные членыМодификаторы доступаСокрытие информацииПродвинутые декораторы свойствПовторение — система учёта студентов12Проект: Система управления библиотекой
Обзор проектаКлассы книг и пользователейСистема выдачи книгФункция поискаИнтерфейс администратораТестирование и интеграцияПотренируйтесь самостоятельно: Онлайн-компилятор Python