Курс 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. Преобразование в float
  2. Освоение Python
  3. Явный импорт переменных
  4. Подсказки типов в Python
  5. Основы работы со строками в Python
  6. Печать месячного календаря
  7. Таймер обратного отсчета
  8. Работа с файлами в Python
  9. Решатель судоку на Python с pygame
  10. Сериализация объектов в Python
  11. Эффективная конкатенация строк в Python
  12. Форматирование данных с помощью pprint
  13. Определение объема памяти объекта
  14. Именованные срезы в Python
  15. Сравнение def и lambda функций в Python
  16. Создание файла с проверкой ошибки
  17. Очистка строки в Python
  18. Глобальные переменные в Python
  19. Поиск повторов в списке
  20. Поиск уникальных и повторяющихся элементов
  21. Метод __index__ в Python
  22. Преобразование данных в Python
  23. Работа с JSON данными в Python
  24. Изменение логики работы с временем
  25. Эффективная конкатенация строк с использованием join()
  26. Обработка исключений
  27. Операторы объединения в Python 3.9
  28. Установка и загрузка Instaloader
  29. globals и locals
  30. Подсчет элементов в Python
  31. Функция all() в Python
  32. Присвоение и ссылки
  33. Нахождение хеша для бесконечности и NaN в Python
  34. Исключение NotImplementedError
  35. Работа с deque из collections
  36. Распаковка значений в Python
  37. Метод rpow в Python
  38. Документирование функций в Python
  39. Многоточие в Python
  40. Поиск частых элементов в списке
  41. Метод join для объединения строк
  42. Строковое представление объектов
  43. Комментарии в Python
  44. ChainMap.new_child() — добавление нового словаря
  45. Подсчет элементов с помощью Counter из collections
  46. Работа с часовыми поясами в Python.

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