---
sidebar_position: 7
---

# Основы объектно-ориентированного программирования (ООП)

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

**Классы и объекты:**

  * **Класс:**  Это шаблон или чертеж для создания объектов. Класс определяет структуру и поведение объектов.
  * **Объект (экземпляр класса):**  Это конкретный экземпляр класса.

<!-- end list -->

```python
class Dog: # Определение класса Dog
    def __init__(self, name, breed): # Конструктор класса (метод __init__)
        self.name = name # Атрибут name
        self.breed = breed # Атрибут breed

    def bark(self): # Метод bark
        print("Гав!")

# Создание объектов (экземпляров класса Dog)
my_dog = Dog("Рекс", "Немецкая овчарка")
your_dog = Dog("Белка", "Дворняга")

print(my_dog.name)  # Доступ к атрибуту name объекта my_dog (выведет "Рекс")
print(your_dog.breed) # Доступ к атрибуту breed объекта your_dog (выведет "Дворняга")
my_dog.bark()       # Вызов метода bark объекта my_dog (выведет "Гав!")
```

**Основные принципы ООП:**

  * **Инкапсуляция:** Сокрытие внутренних данных объекта и предоставление доступа к ним через методы.
  * **Наследование:**  Создание новых классов на основе существующих классов, наследуя их атрибуты и методы.
  * **Полиморфизм:**  Возможность объектов разных классов реагировать на один и тот же метод по-разному.

ООП — это мощная парадигма, которая позволяет создавать более структурированный, модульный и переиспользуемый код.