Menu
Coddy logo textTech

Множественное наследование

Часть раздела Object Oriented Programming путешествия по 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.

Создайте объект bird и используйте методы обоих родителей:

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 проверяет родительские классы слева направо при поиске методов.

challenge icon

Задание

Средне

В этом испытании вы реализуете многофайловую систему классов, демонстрирующую множественное наследование на примере смартфонов. Каждый класс организован в отдельном файле для лучшей структуры кода.

Вам нужно будет отредактировать следующие файлы:

  • device.py — Реализуйте базовый класс Device
  • internet.py — Реализуйте базовый класс Internet
  • smartphone.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"
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Object Oriented Programming

Потренируйтесь самостоятельно: Онлайн-компилятор Python