Files
SecondBrain/90 Library/Programming/Python/Основы объектно-ориентированного программирования.md
2026-05-31 10:18:48 +03:00

3.1 KiB
Raw Permalink Blame History

status, type, tags, created, updated, source, aliases
status type tags created updated source aliases
seed concept
python
oop
classes
inheritance
polymorphism
encapsulation
2026-05-30 2026-05-31
oop.pdf
Основы ООП в Python

Основы ООП в Python

ООП — методология, в основе которой лежат понятия класса (шаблон) и объекта (экземпляр).

Четыре столпа ООП

  1. Абстракция: Выделение ключевых характеристик объекта и отсечение незначимых.
  2. Инкапсуляция: Сокрытие внутренней логики и данных. В Python реализуется соглашением об именовании:
    • _name: "защищенный" (не рекомендуется трогать вне класса).
    • __name: "приватный" (имя искажается для предотвращения прямого доступа).
  3. Наследование: Создание новых классов на базе существующих. Все классы наследуются от object.
  4. Полиморфизм: Возможность использовать разные типы данных через единый интерфейс.
    • Полиморфизм подтипов: Использование потомка вместо родителя.
    • Параметрический: Обработка данных любого типа (например, len()).
    • Ad-hoc: Перегрузка функций (в Python через разные аргументы).

Работа с классами

class Rectangle:
    default_color = "green"  # Атрибут класса (статический)

    def __init__(self, width, height):
        self.width = width   # Атрибут экземпляра
        self.height = height

    def area(self):          # Метод экземпляра
        return self.width * self.height

    @classmethod
    def change_color(cls, color):
        cls.default_color = color

    @staticmethod
    def hint():
        print("Это прямоугольник")

Специальные методы (Магические методы)

  • __init__: Инициализатор (вызывается после создания объекта).
  • __new__: Конструктор (вызывается для создания экземпляра).
  • __str__: Строковое представление (для print()).

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

class Square(Rectangle):
    def __init__(self, side):
        super().__init__(side, side)  # Вызов родительского инициализатора
  • super() — ссылка на родительский класс.

Модули и пакеты

  • Модуль: Любой .py файл. Подключается через import.
  • Пакет: Папка с файлом __init__.py. Помогает Python находить вложенные модули.