Ответ
Python является объектно-ориентированным языком, так как его модель данных построена вокруг объектов и классов, и он поддерживает ключевые принципы ООП:
-
Инкапсуляция Объединение данных (атрибутов) и методов, которые с ними работают, внутри одного объекта (класса). Это позволяет скрыть детали реализации и предоставить публичный интерфейс для взаимодействия.
-
Наследование Механизм, позволяющий создавать новый класс (потомок) на основе существующего (родителя). Потомок перенимает атрибуты и методы родителя, что способствует повторному использованию кода (DRY — Don't Repeat Yourself).
-
Полиморфизм Способность объектов с одинаковым интерфейсом (например, с методом
speak
) иметь разную реализацию этого интерфейса. Это позволяет писать более гибкий и обобщенный код. -
Абстракция Выделение наиболее значимых характеристик объекта и скрытие несущественных деталей. В 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())
# Вывод:
# Шарик говорит Гав!
# Мурка говорит Мяу!