Курс 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. Методы __repr__ и __str__ в Python
  2. Операторы увеличения и уменьшения переменной
  3. Объединение объектов в Python
  4. Python: Splat-оператор и splatty-splat
  5. Хранение данных с помощью dataclasses
  6. Выражения-генераторы в Python
  7. Мониторинг работы программы Py-spy
  8. Работа с enumerate()
  9. Сортировка в Python
  10. Каналы Senior: Python, Java, Frontend, SQL, C++
  11. Метод округления чисел
  12. Создание класса очереди
  13. Defaultdict в Python
  14. Операции с матрицами в Python
  15. Подсчет количества элементов в списке
  16. Изменение элемента списка
  17. Утечки переменных цикла в Python 3.x
  18. Работа с файлами в Python
  19. Подсчет элементов в Python
  20. Вывод букв строки в Python
  21. Форматирование данных с помощью pprint
  22. Подсчет частоты элементов с Counter
  23. Colorama: окрашивание текста в Python
  24. Преобразование вложенного списка
  25. Работа с Path в Python
  26. Доступ к локальным переменным
  27. Освобождение памяти в Python
  28. Аргумент по умолчанию
  29. Особенности множеств в Python
  30. Codecademy в Telegram
  31. Обработка исключений
  32. Получение размера объекта с sys.getsizeof()
  33. Порядок операций в Python
  34. Замена символов в Python
  35. Оператор «not» в Python
  36. Аргументы *args и **kwargs
  37. Применение функции map() с лямбда-функциями
  38. Метод count в Python: почему count(», ») возвращает 4?
  39. JMESPath в Python
  40. Ошибка NotImplemented в Python
  41. Список переменных с %who
  42. Проверка дублей в списке.
  43. Форматирование строк в Python
  44. Просмотр атрибутов и методов класса
  45. Проверка существования переменной с оператором :=
  46. Псевдонимы в Python

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