Курс 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. PEP-401: оператор
  3. Документация функции help() в Python
  4. Проверка однородности элементов списка
  5. Получение текущего времени в Python
  6. Оператор (*) в Python
  7. Создание вложенных циклов for
  8. Удаление дубликатов из списка
  9. Замена элементов в списке с помощью генераторов списков
  10. Изменение списка срезами
  11. Атрибуты массивов в Numpy
  12. Функции range() в Python
  13. Руководство по использованию Colorama
  14. Декораторы в Python
  15. Стать Python-разработчиком
  16. Принципы программирования
  17. Обработка исключений в Python
  18. Освобождение памяти в Python
  19. Работа с контекст-менеджером «with»
  20. Оператор «is not» в Python
  21. Строки в Python: апострофы и кавычки
  22. Python 3.12: переиспользование кавычек
  23. Счетчик в Python: most_common()
  24. Подсчет вхождений элементов
  25. Объединение словарей в Python
  26. Удаление элементов из списка
  27. Оператор assert в Python
  28. Выход из профиля в Django
  29. Распаковка аргументов в Python
  30. Управление контекстом выполнения кода
  31. Проверка на палиндром
  32. Поиск простых чисел
  33. Основы Python
  34. Регистрация на курсы SF Education
  35. Расчет времени выполнения кода
  36. Сортировка данных с лямбда-функциями
  37. Создание функций с произвольным количеством аргументов
  38. Множественное назначение в Python
  39. Определение относительного пути
  40. Принципы LSP и ISP в Python
  41. Использование функции enumerate()
  42. Работа с файлами в Python
  43. Magic Commands — улучшение работы с Python
  44. Класс-оболочка для словарей
  45. Разность множеств
  46. Явный импорт переменных

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