Встречается на 30% собеседований по Python

Какие знаешь принципы ООП

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

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

Наследование позволяет создать новый класс на основе существующего. Новый класс (дочерний) получает все атрибуты и методы родительского класса, а также может добавлять собственные или переопределять унаследованные. Это уменьшает дублирование кода и упрощает поддержку.

python
class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return f"{self.name} says Woof!"

Инкапсуляция

Инкапсуляция — это ограничение доступа к внутренним данным объекта. В Python принято использовать одинарное подчёркивание _ для «защищённых» атрибутов и двойное __ для «приватных». Приватные атрибуты нельзя напрямую изменить извне, что защищает данные от случайной порчи.

python
class BankAccount:
    def __init__(self, balance):
        self.__balance = balance  # приватный атрибут

    def deposit(self, amount):
        self.__balance += amount

    def get_balance(self):
        return self.__balance

Полиморфизм

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

python
animals = [Dog("Rex"), Cat("Tom")]
for animal in animals:
    print(animal.speak())  # каждый вызывает свой метод speak

Абстракция

Абстракция скрывает сложные детали реализации и показывает только необходимый интерфейс. В Python для этого используются абстрактные классы и методы из модуля abc. Абстрактный метод объявляется, но не реализуется в базовом классе, а дочерние классы обязаны его реализовать.

python
from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self):
        pass

class Square(Shape):
    def __init__(self, side):
        self.side = side

    def area(self):
        return self.side ** 2

Коротко

  • Четыре принципа ООП: абстракция, наследование, инкапсуляция, полиморфизм.
  • Наследование — создание нового класса на основе существующего, переиспользование кода.
  • Инкапсуляция — скрытие данных через _ и __, защита от внешних изменений.
  • Полиморфизм — один интерфейс для разных типов, реализуется переопределением методов.
  • Абстракция — скрытие деталей реализации, в Python через abc.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы