Курс 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. Поиск с библиотекой Google
  2. Необязательные аргументы в Python
  3. Цикл for в Python
  4. Добавление Progressbar в Python
  5. Python: отсутствие точек с запятыми
  6. Преобразование регистра строк
  7. Метод lt для сортировки объектов
  8. Структурирование именованных констант
  9. Поиск всех индексов подстроки
  10. Функция __init__ в Python
  11. Распаковка аргументов в Python
  12. Протокол управления контекстом
  13. Метод matmul для умножения матриц
  14. Перевод эмодзи и эмотиконов.
  15. Отправка поздравлений по дню рождения
  16. Выражения-генераторы в Python
  17. Определение функций с необязательными аргументами
  18. Округление банкира в Python
  19. Проверка на истинность объектов в Python
  20. Оператор морж в Python 3.8
  21. Объединение строк с помощью метода join
  22. Участие в сообществе @selectel
  23. Перегрузка операторов в Python
  24. Поиск частого элемента
  25. Присвоение значений переменным в Python
  26. Метод add для класса Vector
  27. Разделение строки на пары ключ-значение.
  28. Управление браузером с Selenium
  29. Удаление элементов по срезу
  30. Область видимости переменных
  31. Получение локальных переменных в Python
  32. kwargs в Python
  33. Модуль Operator в Python
  34. Многострочные комментарии в Python
  35. Основные операции с библиотекой Numpy
  36. Декораторы в Python
  37. Оптимизация поиска в словарях
  38. Счетчик ссылок в Python
  39. Повторение элементов в Python
  40. Автоматизация действий с Pyautogui
  41. Генерация случайных данных в NumPy
  42. Описание скриптов в README
  43. Создание и использование ChainMap
  44. Работа с утверждениями в Python
  45. Метод сравнения объектов в Python
  46. Создание и инициализация объектов
  47. Регистрация на TenChat

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