Курс 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. Измерение времени выполнения кода
  3. Генераторные функции в Python
  4. Сумма элементов списка
  5. Получение ID текущего процесса
  6. Проекты на Python
  7. Отображение графиков в Jupyter с Matplotlib
  8. Пространство имен в Python
  9. Функция reduce() из модуля functools
  10. Вызов функций по строке в Python.
  11. Цикл while в Python
  12. Bootle — простой веб-фреймворк
  13. Очистка строки в Python
  14. Искажение имен в Python
  15. Объединение списков в Python
  16. Mad Libs Generator
  17. Отладчик pdb: начало работы
  18. Преобразование кортежа в словарь.
  19. Виртуальное окружение Python
  20. Оформление кода на Python
  21. kwargs в Python
  22. Управление контекстом с помощью декоратора contextmanager
  23. Модуль antigravity: генерация координат
  24. Работа с изображениями Pillow
  25. Изменение регистра данных
  26. Резервирование символов в Python
  27. Создание пар из последовательностей
  28. Обработка исключений в Python
  29. Конвертация изображений в PDF
  30. Управление памятью в numpy.
  31. Использование модуля __future__
  32. Циклы в Python
  33. Функция zip() в Python
  34. Модуль Antigravity в Python 3
  35. Генерация случайных чисел Python
  36. Генераторы данных
  37. Удаление символа из строки
  38. Работа с классами данных
  39. Блок else в Python
  40. Транспонирование матрицы
  41. Обновление множества в Python
  42. Метод Event.wait() в Python
  43. Структура строк в Python
  44. Копирование файлов с shutil()

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