/
Demek
/
DSam621
Обзор
Документация
Войти
/
Demek
/
DSam621
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
Python/hw13.py
90 строк
5 KB
d_e_m_e_k
добавил учебную ai для обучения
27 июл 2026, 23:34
27 июл 2026, 23:34
2dfa071
Код
Авторство
О чём код?
# ОБЪЯВЛЕНИЕ БАЗОВОГО КЛАССА Shape class Shape: """ Базовый (родительский) класс, представляющий абстрактную геометрическую фигуру. Этот класс не создаётся напрямую, а служит шаблоном для дочерних классов. Его главная задача — определить "контракт": все фигуры должны уметь вычислять площадь. """ def area(self): """ Метод для вычисления площади фигуры. В базовом классе он не реализован (пустой оператор pass), потому что у разных фигур разные формулы площади. Это называется "абстрактным методом" (в Python без модуля abc — просто заглушка). """ pass # ничего не делает; просто указывает, что метод должен быть переопределён в подклассах # ОБЪЯВЛЕНИЕ ДОЧЕРНЕГО КЛАССА Square (наследуется от Shape) class Square(Shape): """ Класс квадрата — конкретная реализация фигуры. Наследуется от Shape, значит, должен реализовать метод area(). """ def __init__(self, side): """ Метод-конструктор — вызывается при создании объекта: square = Square(4) self — ссылка на сам создаваемый объект (аналог this в C++/Java). side — длина стороны квадрата, передаваемая при создании. """ self.side = side # сохраняем переданное значение в атрибут объекта: self.side def area(self): """ Переопределение метода area() из базового класса. Для квадрата площадь = сторона². """ return self.side ** 2 # возводим сторону в квадрат и возвращаем результат # ОБЪЯВЛЕНИЕ ЕЩЁ ОДНОГО ДОЧЕРНЕГО КЛАССА Circle (тоже наследуется от Shape) class Circle(Shape): """ Класс круга — другая конкретная реализация фигуры. Также наследуется от Shape и обязан реализовать area(). """ def __init__(self, radius): """ Конструктор круга. radius — радиус круга, передаваемый при создании: circle = Circle(5) """ self.radius = radius # сохраняем радиус в атрибут объекта def area(self): """ Переопределение метода area() для круга. Площадь круга = π · r². Здесь π приближено числом 3.14. """ return 3.14 * self.radius ** 2 # вычисляем площадь: 3.14 * радиус² # СОЗДАНИЕ СПИСКА ФИГУР — ПРИМЕР ПОЛИМОРФИЗМА shapes = [Square(4), Circle(5)] """ Создаём список, который содержит объекты РАЗНЫХ ТИПОВ: - Square(4) — квадрат со стороной 4 - Circle(5) — круг радиусом 5 Благодаря наследованию от Shape, оба объекта можно хранить в одном списке. Это возможно, потому что Python позволяет спискам содержать объекты разных типов. """ # ЦИКЛ ПО ФИГУРАМ — ГЛАВНАЯ МАГИЯ ПОЛИМОРФИЗМА for s in shapes: print(s.area()) # 16 и 78.5 """ Цикл проходит по списку shapes: - s — текущая фигура (сначала Square, потом Circle) ВАЖНО: для обоих вызывается ОДИН И ТОТ ЖЕ метод s.area() - Когда s = Square(4): вызывается Square.area() → возвращает 4² = 16 - Когда s = Circle(5): вызывается Circle.area() → возвращает 3.14·5² = 78.5 Python автоматически определяет, какой именно метод area() вызывать, исходя из типа объекта (это и есть полиморфизм). Результат: 16 78.5 """