Sobes.tech
Back to questions
Junior — Middle
49

Каким образом реализовать метод класса так, чтобы он не был доступен извне для изменения или вызова?

Answer from AI

sobes.tech AI

В Python нет строгой приватности методов, но можно использовать соглашения для ограничения доступа:

  • Одно подчёркивание (_method): обозначает, что метод предназначен для внутреннего использования, но не запрещает вызов извне.
  • Двойное подчёркивание (__method): приводит к name mangling — имя метода изменяется, чтобы затруднить доступ извне.

Пример:

class MyClass:
    def __private_method(self):
        print("Это приватный метод")

    def public_method(self):
        self.__private_method()

obj = MyClass()
obj.public_method()  # Работает

# obj.__private_method()  # Ошибка AttributeError

# Но можно вызвать так:
obj._MyClass__private_method()  # Работает, но не рекомендуется

Таким образом, для реализации метода, который не должен быть доступен извне, используют двойное подчёркивание в имени метода.