Урок 15: Наследование и полиморфизм в Python

Наследование и полиморфизм в Python

Краткое введение

Наследование и полиморфизм являются двумя из четырех основных принципов объектно-ориентированного программирования. Они позволяют программистам создавать гибкие и масштабируемые структуры кода, повышая эффективность разработки и поддержки программного обеспечения.

Теоретическая часть

Наследование

Наследование позволяет одному классу (дочернему классу) наследовать атрибуты и методы другого класса (родительского). Это обеспечивает иерархию классов и способствует повторному использованию кода.

Полиморфизм

Полиморфизм дает возможность одному интерфейсу принимать множество форм. В контексте ООП это означает, что методы могут вести себя по-разному в зависимости от объекта (или класса), к которому они принадлежат.

Примеры кода

# Пример наследования
class Animal:
 def __init__(self, name):
 self.name = name

 def speak(self):
 pass

class Dog(Animal):
 def speak(self):
 return f"{self.name} says Woof!"

class Cat(Animal):
 def speak(self):
 return f"{self.name} says Meow!"

# Пример полиморфизма
def animal_sound(animal):
 print(animal.speak())

dog = Dog("Buddy")
cat = Cat("Whiskers")

animal_sound(d
 animal_sound(dog) # Выведет "Buddy says Woof!"
 animal_sound(cat) # Выведет "Whiskers says Meow!"
 

Практические задания

1. Создайте класс Shape с методом area(), который возвращает 0. Затем создайте производные классы Rectangle и Circle, переопределяющие метод area() для вычисления площади фигуры.
2. Разработайте функцию print_area(), которая принимает объект формы и выводит его площадь. Используйте эту функцию для демонстрации полиморфизма.

Решение задания

# Классы Shape, Rectangle и Circle
class Shape:
 def area(self):
 return 0

class Rectangle(Shape):
 def __init__(self, width, height):
 self.width = width
 self.height = height

 def area(self):
 return self.width * self.height

class Circle(Shape):
 def __init__(self, radius):
 self.radius = radius

 def area(self):
 return 3.14 * self.radius * self.radius

# Функция print_area
def print_area(shape):
 print(f"The area is {shape.area()}")

rect = Rectangle(10, 5)
circle = Circle(7)

print_area(rect)
print_area(circle)

© 2024 realschule.ru

Категория: Python с нуля | Добавил: Admin (07.03.2024)
Просмотров: 33 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: