Курс 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. Функция eval() в Python
  3. Python Translator: создание локальных переводчиков
  4. Транспонирование матрицы
  5. Логические значения в Python
  6. Сравнение объектов в Python
  7. Транспонирование 2D-массива с помощью zip
  8. Установка и использование Logzero
  9. Декоратор Ajax required
  10. Работа с коллекциями Python
  11. Генераторы в Python
  12. Курс Data Scientist в медицине
  13. Утечки переменных цикла в Python 3.x
  14. Python Метод del.
  15. Enum в Python
  16. Метод rmatmul для обратного матричного умножения
  17. Дефолтные параметры в Python
  18. Функции map() и reduce() в Python
  19. Оператор объединения словарей
  20. Чтение бинарного файла в Python.
  21. Обработка исключений в Python
  22. Библиотека Emoji: использование смайлов в Python
  23. Делегирование в Python
  24. Возведение в квадрат с помощью itertools
  25. Частичное совпадение ввода
  26. Установка и загрузка Instaloader
  27. Асинхронное программирование с asyncio
  28. Повторение элементов в Python
  29. Удаление элемента по индексу в Python
  30. Фильтрация списков с itertools
  31. Метод enumerate() в Python
  32. Namedtuple в Python
  33. Переворот строки
  34. Деление в Python
  35. Приоритет операций в Python
  36. Работа с контекст-менеджером «with»
  37. Форматирование строк в Python
  38. Отношения подклассов в Python
  39. Функции высшего порядка в Python
  40. Оператор in и not in в Python
  41. Работа с Enum в Python3.
  42. Оператор += в Python
  43. Генерация ключей RSA
  44. Python itertools combinations() — группировка элементов
  45. Magic Commands — улучшение работы с Python

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