Курс 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. Работа с временем в Python
  2. Объединение словарей в Python
  3. Упрощенный вывод данных в Python
  4. Изменение элемента списка
  5. Очистка данных в Python
  6. Оптимизация памяти с slots
  7. Метод lt для сортировки объектов
  8. Создание графиков в терминале
  9. Синтаксис переменных цикла в Python
  10. Метод get для словаря
  11. Объединение множеств в Python
  12. Логические операторы в Python
  13. Удаление элементов по срезу
  14. Комментарии в Python.
  15. Создание панели меню Tkinter
  16. Сравнение объектов в Python
  17. Работа с словарями в Python
  18. Сравнение строк в Python
  19. Печать в одной строке
  20. Изменение списка срезами
  21. Python Calendar Usage
  22. Обход словаря в Python
  23. Виртуальное окружение Python
  24. Управление виртуальными окружениями в Python
  25. Установка и использование howdoi
  26. Делегирование в Python
  27. Пространство имен в Python
  28. Работа с Telegram API на Python
  29. Проверка условий в Python
  30. Оператор == в Python
  31. Отладка в Python
  32. Python-dateutil — работа с датами
  33. Использование super() в Python
  34. Работа с итераторами через срезы
  35. Работа с JSON в Python
  36. Отправка HTTP-запросов в Python
  37. Кортеж в Python: создание и использование
  38. Кортеж в Python: создание, доступ, изменение
  39. Безопасный доступ к значениям словаря
  40. Работа с argparse
  41. Синхронизация потоков с time.sleep()
  42. Игра «Камень, ножницы, бумага» — Python
  43. Lambda Functions in Python
  44. Преобразование генераторов в циклы
  45. Оператор «not» в Python
  46. Сортировка с помощью параметра key

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