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() # Работает, но не рекомендуется
Таким образом, для реализации метода, который не должен быть доступен извне, используют двойное подчёркивание в имени метода.