Junior — Middle
66
Wie implementiert man eine Klassenmethode so, dass sie von außen nicht zugänglich ist, um sie zu ändern oder aufzurufen?
Antwort von AI
sobes.tech KI
В 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() # Работает, но не рекомендуется
Таким образом, для реализации метода, который не должен быть доступен извне, используют двойное подчёркивание в имени метода.