Почему Python считается объектно-ориентированным языком

Ответ

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

  1. Инкапсуляция Объединение данных (атрибутов) и методов, которые с ними работают, внутри одного объекта (класса). Это позволяет скрыть детали реализации и предоставить публичный интерфейс для взаимодействия.

  2. Наследование Механизм, позволяющий создавать новый класс (потомок) на основе существующего (родителя). Потомок перенимает атрибуты и методы родителя, что способствует повторному использованию кода (DRY — Don't Repeat Yourself).

  3. Полиморфизм Способность объектов с одинаковым интерфейсом (например, с методом speak) иметь разную реализацию этого интерфейса. Это позволяет писать более гибкий и обобщенный код.

  4. Абстракция Выделение наиболее значимых характеристик объекта и скрытие несущественных деталей. В Python это часто реализуется через абстрактные базовые классы (модуль abc).

Пример:

from abc import ABC, abstractmethod

# Абстракция: определяем общий интерфейс для всех животных
class Animal(ABC):
    def __init__(self, name):
        self._name = name  # Инкапсуляция: атрибут скрыт от прямого доступа

    @abstractmethod
    def speak(self):
        pass

# Наследование: Dog наследует от Animal
class Dog(Animal):
    # Полиморфизм: своя реализация метода speak
    def speak(self):
        return f"{self._name} говорит Гав!"

class Cat(Animal):
    # Полиморфизм: другая реализация того же метода
    def speak(self):
        return f"{self._name} говорит Мяу!"

animals = [Dog("Шарик"), Cat("Мурка")]
for animal in animals:
    print(animal.speak())

# Вывод:
# Шарик говорит Гав!
# Мурка говорит Мяу!