Наследование и полиморфизм
Изучение наследования и полиморфизма в Python.
Наследование и полиморфизм
В этом занятии мы углубимся в принципы объектно-ориентированного программирования (ООП): наследование и полиморфизм. Наследование позволяет создавать новые классы на основе существующих, а полиморфизм — использовать объекты разных классов через единый интерфейс.
Наследование
Наследование позволяет дочернему классу использовать атрибуты и методы родительского класса. Это помогает избежать дублирования кода.
class Animal:
def speak(self):
print("Животное издает звук")
class Dog(Animal):
def bark(self):
print("Собака лает")
my_dog = Dog()
my_dog.speak() # Выведет: Животное издает звук
my_dog.bark() # Выведет: Собака лает
Переопределение методов
Дочерний класс может переопределить методы родительского класса, чтобы изменить их поведение.
class Cat(Animal):
def speak(self):
print("Кошка мяукает")
my_cat = Cat()
my_cat.speak() # Выведет: Кошка мяукает
Полиморфизм
Полиморфизм позволяет использовать объекты разных классов через единый интерфейс. Например, можно создать список животных и вызвать метод speak
для каждого из них.
animals = [Dog(), Cat()]
for animal in animals:
animal.speak()
# Выведет:
# Животное издает звук
# Кошка мяукает
Множественное наследование
Python поддерживает множественное наследование, когда класс может наследовать от нескольких родительских классов.
class Bird:
def fly(self):
print("Птица летит")
class Parrot(Bird, Animal):
def speak(self):
print("Попугай говорит")
my_parrot = Parrot()
my_parrot.speak() # Выведет: Попугай говорит
my_parrot.fly() # Выведет: Птица летит
Заключение
Теперь вы знаете, как использовать наследование и полиморфизм в Python. Попробуйте создать свои классы с наследованием и переопределением методов. В следующем занятии мы изучим работу с библиотеками.
Практика
🎯 Миссия 13: Организовать транспортный парк🔍 Контекст: От велосипеда до Tesla — всё в одном гараже!
⚙️ Техзадание:
1. Базовый класс
Vehicle
с name
и max_speed
2. Класс
Car
(добавьте num_doors
)3. Класс
Bicycle
(добавьте has_bell
)4. Полиморфизм: создайте список и вызовите
display_info()
Автомобиль: дверей - 4 Велосипед: звонок - есть
💡 Подсказка:
for vehicle in vehicles: vehicle.display_info()
Попробуйте на практике:
Результат:
Вопросы для закрепления
Вопросы для проверки усвоенного материала доступны зарегистрированным пользователям.