Junior — Middle
Comment implémenter une méthode de classe de manière à ce qu'elle ne soit pas accessible de l'extérieur pour la modifier ou l'appeler?
sobes.tech IA
Réponse de l'IA
В 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() # Работает, но не рекомендуется
Таким образом, для реализации метода, который не должен быть доступен извне, используют двойное подчёркивание в имени метода.