Курс 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. Парсинг веб-страниц с Beautiful Soup
  2. Метод title() в Python
  3. Метод округления чисел
  4. Howdoi — получение ответов из терминала
  5. Метод eq для сравнения объектов
  6. История Python
  7. Поиск наиболее частого элемента в списке
  8. %pinfo: получение информации об объекте
  9. Метод __irshift__ для Python
  10. Импортирование в Python
  11. Применение промокода в Много лосося
  12. Удаление файлов с shutil.os.remove()
  13. Метод join() для объединения элементов строки
  14. Генератор списка с условием if
  15. Ошибка NotImplemented в Python
  16. Работа с zip-архивами в Python
  17. Группы исключений в Python
  18. Сортировка данных с лямбда-функциями
  19. Встроенные функции Python
  20. Работа с GitHub в Telegram
  21. Идентификатор объекта в Python
  22. Работа с Enum в Python3.
  23. Работа с часовыми поясами в Python.
  24. Псевдонимы в Python
  25. Определение имен функций
  26. Функция product() в Python
  27. Многострочные комментарии в Python
  28. Форматирование строк в Python
  29. Работа с изображениями Pillow
  30. Замена переменных в Python
  31. Функция с *args.
  32. Подсчет вхождений элементов
  33. Удаление элементов из списка в Python
  34. Создание класса очереди
  35. Именованные аргументы в Python
  36. Логические операторы в Python
  37. Изменения в обработке логических значений
  38. Работа с множествами в Python
  39. Функция enumerate в Python
  40. Оформление кода на Python
  41. Введение в Python
  42. Сортировка в Python
  43. Создание итератора
  44. Создание комплексных чисел
  45. Перегрузка операторов в Python
  46. Фильтрация списка чисел

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