Junior — Middle
65
Jak implementovat metodu třídy tak, aby nebyla dostupná zvenčí pro změnu nebo volání?
Odpověď od 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() # Работает, но не рекомендуется
Таким образом, для реализации метода, который не должен быть доступен извне, используют двойное подчёркивание в имени метода.