Junior — Middle
64
Каким образом можно объявить метод класса таким образом, чтобы он был недоступен извне и защищён от изменения?
Answer from AI
sobes.tech AI
В Python для того, чтобы сделать метод класса недоступным извне и защитить его от изменения, обычно используют соглашения об именовании и особенности языка:
-
Приватный метод: имя метода начинается с двойного подчеркивания
__, например,__my_method. Это вызывает механизм name mangling, который затрудняет доступ к методу извне. -
Отсутствие прямой защиты: Python не имеет строгой приватности, поэтому это скорее соглашение и механизм затруднения доступа, а не абсолютная защита.
Пример:
class MyClass:
def __my_method(self):
print("Это приватный метод")
def public_method(self):
self.__my_method()
obj = MyClass()
obj.public_method() # Работает
# obj.__my_method() # Ошибка AttributeError
# Но можно вызвать так:
obj._MyClass__my_method() # Работает, но не рекомендуется
Таким образом, объявление метода с двойным подчеркиванием делает его «приватным» по соглашению и защищает от случайного переопределения или вызова извне.