Курс 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. Удаление дубликатов из списка
  2. Игра «Камень, ножницы, бумага» — Python
  3. JSON в Python: модуль, dump, dumps, load
  4. Оператор объединения словарей
  5. Управление асинхронными задачами на Python.
  6. Атрибуты объекта в Python
  7. Хеширование паролей с солью
  8. Преобразование Word в PDF с Spire.Doc
  9. Списковое включение в Python
  10. Срез списка в Python
  11. Функция reduce() из модуля functools
  12. Аннотации типов в Python
  13. Создание Telegram-бота на Python
  14. Решение переменной Шредингера
  15. Функции range() в Python
  16. Методы в Python
  17. Создание инструмента обнаружения плагиата
  18. Синтаксис переменных цикла в Python
  19. Порядок и длина множеств в Python
  20. Метод enumerate() в Python
  21. Повторение элементов в Python
  22. Сортировка с помощью key
  23. Переворот списка в Python
  24. Установка и использование howdoi
  25. Создание виртуальной среды
  26. Слияние словарей в Python 3.9
  27. Создание циклической ссылки
  28. Создание списка дат
  29. Обработка аргументов Python
  30. Работа с файлами в Python
  31. Переопределение метода __lshift__
  32. Поиск самого частого элемента
  33. Введение в PyTorch
  34. Оптимизация методов в Python 3.7
  35. Создание GUI на Tkinter
  36. Выражения-генераторы в Python
  37. Нахождение разницы между списками в Python
  38. Применение функции к списку
  39. Добавление Progressbar в Python
  40. Курс по дообучению ChatGPT
  41. Подсчет элементов в Python
  42. Цикл for в Python
  43. Непрерывная проверка в Python
  44. Метод clear для коллекций
  45. Python reversed() функция
  46. Применение промокода в Много лосося
  47. Оптимизация памяти с slots
  48. Класс-оболочка для словарей
  49. Декораторы в Python

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