Курс 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. Удаление дубликатов с помощью множеств
  2. Срез списка в Python
  3. Разделение строки с помощью split()
  4. Работа с набором данных CIFAR10 в PyTorch
  5. Объединение списков в Python
  6. Отладка в Python
  7. Основы работы с базами данных в Python
  8. Избегайте изменяемых аргументов
  9. Транспонирование 2D-массива с помощью zip
  10. PUT запрос для обновления данных
  11. Проверка существования переменной с оператором :=
  12. Генераторы списков в Python
  13. Добавление Progressbar в Python
  14. Распаковка аргументов в Python
  15. Добавление кнопки в tkinter
  16. Работа с изменяемыми коллекциями
  17. Удаление элементов из списка
  18. Применение функции к каждому элементу списка
  19. Обратный список чисел
  20. Любовь к Python
  21. Профилирование данных с Pandas.
  22. Тернарный оператор в Python
  23. Переопределение метода len
  24. Декораторы в Python
  25. Установка библиотек в Python
  26. Ограничение итераций в Python
  27. Отладка кода
  28. Улучшенные подсказки для импорта в Python 3.12
  29. Оператор * в Python
  30. Namedtuple в Python
  31. Создание и удаление объектов
  32. Избегайте ошибку FileNotFoundError
  33. Преобразование числа в список цифр
  34. Библиотека wikipedia для Python
  35. Установка User-Agent в Python
  36. Генераторы в Python
  37. Создание уникального проекта
  38. Список переменных в Python
  39. Выражения-генераторы в Python
  40. Аннотации типов в Python
  41. Множественное наследование в Python
  42. Проекты на Python
  43. Многопоточность и асинхронное программирование в Python
  44. Функции высшего порядка в Python
  45. Оптимизация параметров в Python
  46. Срезы в Numpy
  47. Контроль точности вывода чисел

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