Курс Python → Защита данных в Python

Python имеет функцию под названием «name mangling», которая позволяет изменять имена атрибутов класса или методов путем добавления двойного подчеркивания «__» в начале их имен. Это делается для того, чтобы предотвратить случайное переименование атрибутов в подклассах, которые будут унаследованы суперклассом. Таким образом, «name mangling» обеспечивает защиту от конфликтов имен в классах и их подклассах.

Пример использования «name mangling» в Python:


class MyClass:
    def __init__(self):
        self.__private_attribute = 10

    def __private_method(self):
        return "This is a private method."

obj = MyClass()
print(obj.__private_attribute)  # Ошибка: AttributeError: 'MyClass' object has no attribute '__private_attribute'
print(obj.__private_method())    # Ошибка: AttributeError: 'MyClass' object has no attribute '__private_method'

В данном примере, атрибуты __private_attribute и __private_method являются «скрытыми» и не могут быть доступны извне класса MyClass. Если попытаться обратиться к ним напрямую, возникнет ошибка AttributeError. Это демонстрирует, как «name mangling» обеспечивает защиту от несанкционированного доступа к атрибутам и методам класса.

Таким образом, использование «name mangling» в Python позволяет обеспечить безопасность и защиту данных в классах, предотвращая случайное переименование атрибутов и методов в подклассах. Это помогает избежать конфликтов имен и обеспечивает четкую структуру классов в программе.

Важно помнить, что «name mangling» не делает атрибуты или методы полностью приватными в Python. Они все равно могут быть доступны через специальный синтаксис. Однако, использование этой функции помогает организовать код и избежать путаницы в именовании.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Нахождение самого длинного слова в списке с помощью max
  2. ROT13 Шифр Цезаря в Python
  3. Генераторы в Python
  4. Регулярные выражения в Python
  5. Переменные в Python
  6. Установка и использование Telegram API в Python
  7. Работа со случайными элементами
  8. Оформление текста в консоли с TermColor
  9. Мониторинг работы программы Py-spy
  10. Метод __index__ в Python
  11. Модуль subprocess: запуск внешних команд
  12. Проверка памяти объекта
  13. Методы работы со списками
  14. Закрытие файла в Python
  15. Конкатенация строк с методом join()
  16. Измерение времени выполнения кода с помощью time
  17. Метод invert для побитового отрицания
  18. Проблемы с именами переменных
  19. Проблемы с dict в Python
  20. Модуль itertools: эффективная работа с итераторами
  21. Реализация операции -= для пользовательского класса
  22. Метаклассы в Python
  23. Работа с timedelta в Python
  24. Работа с аргументами командной строки
  25. Работа с getopt
  26. Отладка производительности Python
  27. Возврат значений из генератора
  28. Анонимные функции в Python
  29. Pretty-printing JSON в Python
  30. Очистка данных в Python
  31. Проблема с изменяемыми аргументами
  32. Участие в LP стейкинге Waves
  33. Поиск HTML-элементов с BeautifulSoup
  34. Глубокое копирование объектов
  35. Работа с контекстными переменными
  36. Измерение потребления памяти при сортировке
  37. Форматирование строк в Python
  38. Конкатенация строк в Python
  39. Подсказки при вводе данных в Python
  40. Defaultdict в Python
  41. Тип данных TypeVarTuple
  42. Функция divmod() в Python
  43. Поиск email
  44. Объединение строк с помощью метода join

Marketello читают маркетологи из крутых компаний