Курс 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. Переопределение метода __and__
  2. Метод pop() списка
  3. Оператор continue в Python
  4. Множественные конструкторы в Python
  5. Ускорение кода с помощью векторизации
  6. Создание и удаление объектов
  7. Импорт модуля из другого каталога
  8. Ветвление выражения в Python
  9. Выражения-генераторы в Python
  10. ChainMap избыточные ключи
  11. Оператор in для Python
  12. Декораторы в Python
  13. Работа с OpenCV
  14. Деление в Python
  15. Преобразование регистра символов
  16. Блок else в циклах.
  17. Обработка исключения UnboundLocalError
  18. Работа с PosixPath() в Python
  19. Основы работы с os
  20. Тип CodeType в Python.
  21. Настройка Cron
  22. Лямбда-функции в Python
  23. Отрицательные индексы списков в Python
  24. PrettyTable: создание таблицы
  25. Хранение переменных в Python.
  26. SciPy: широкий функционал для математических операций
  27. Применение функции map() в Python
  28. Defaultdict в Python
  29. Уникальные значения из списка
  30. Работа с CSV файлами
  31. Работа со словарями Python
  32. Python defaultdict добавление ключа
  33. Преобразование кортежа в словарь.
  34. Декораторы в Python
  35. Удаление дубликатов из списка
  36. Создание новых списков в Python
  37. Работа с модулем Calendar
  38. Аннотации типов в Python
  39. Создание объекта timedelta
  40. Лямбда-функции в Python
  41. Генераторы словарей и множеств
  42. Аргумент по умолчанию
  43. Получение ID текущего процесса
  44. Оптимизация гиперпараметров в Python
  45. Освобождение памяти в Python

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