Sobes.tech
Back to questions
Junior — Middle
64

Какие особенности наследования и инкапсуляции в объектно-ориентированном программировании на Python вы знаете?

Companies where asked
LC-Group

Answer from AI

sobes.tech AI

В Python наследование и инкапсуляция имеют свои особенности:

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

  • Python поддерживает множественное наследование, то есть класс может наследоваться от нескольких базовых классов.
  • Для вызова методов базового класса используется функция super().

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

  • В Python нет строгой приватности, но есть соглашения:
    • Атрибуты и методы, начинающиеся с одного подчеркивания _, считаются защищёнными (protected) и не предназначены для внешнего использования.
    • Атрибуты с двойным подчеркиванием __ вызывают манглинг имени (name mangling), что затрудняет доступ извне, но не делает их полностью приватными.

Пример:

class Base:
    def __init__(self):
        self._protected = "защищённый"
        self.__private = "приватный"

    def get_private(self):
        return self.__private

class Child(Base):
    def show(self):
        print(self._protected)  # доступен
        # print(self.__private)  # вызовет ошибку
        print(self.get_private())  # доступ через метод

c = Child()
c.show()

Таким образом, инкапсуляция в Python больше основана на соглашениях, а не на строгих ограничениях.