Курс 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. Изучение объектов с помощью dir()
  2. Уникальность ключей в словаре
  3. Функция enumerate в Python
  4. Перезагрузка оператора в Python
  5. Метод __float__ в Python
  6. Просмотр атрибутов и методов класса
  7. Вывод переменной и строки в Python
  8. Метод __irshift__ для Python
  9. Применение функции к каждому элементу списка
  10. Работа с collections.Counter
  11. Работа с deque из collections
  12. Управление виртуальными окружениями в Python
  13. Доступ к локальным переменным
  14. Декораторы в Python
  15. Функции all() и any() в Python
  16. Преобразование типов данных в set comprehension
  17. Участие в сообществе @selectel
  18. Поиск индексов в списке
  19. Проверка ввода с помощью isdigit
  20. Создание объекта времени
  21. Обработка ошибок в JSON данных
  22. Исправление ошибки NameError
  23. Игра «Виселица» на Python
  24. Отношения подклассов в Python
  25. Создание класса в Python
  26. Импорт и использование модулей в Python
  27. Создание вложенного генератора
  28. Область видимости переменных
  29. Именованные кортежи в Python
  30. Функции range() в Python
  31. Подсчет вхождений элементов
  32. Асинхронное программирование с asyncio
  33. Отладка в Python
  34. Создание и использование ChainMap
  35. Утечки переменных цикла в Python 3.x
  36. Комментарии в Python
  37. Работа с *args и **kwargs в Python
  38. Удаление дубликатов в pandas
  39. Измерение времени выполнения кода в Python
  40. Скачать видео с YouTube
  41. Работа с датой и временем в Python
  42. Модуль Antigravity в Python 3
  43. Операторы присваивания в Python
  44. Разбиение текста в Python

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