Курс 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. Поиск самого частого элемента
  3. Декораторы с @wraps
  4. Настройка шрифта и цвета в Tkinter
  5. Профилирование данных с Pandas
  6. Экспорт данных в файл.
  7. Логические значения в Python
  8. Метод rmatmul для обратного матричного умножения
  9. Непрерывная проверка в Python
  10. Анализ кода — Python
  11. Любовь к Python
  12. Работа с срезами в Python
  13. Метод __iand__ для пользовательских классов
  14. Сумма элементов списка
  15. Хранение переменных в Python.
  16. PUT запрос для обновления данных
  17. split() без разделителя
  18. Лямбда-функции в Python
  19. Обработка исключений с блоком else
  20. Создание словарей с defaultdict
  21. Очистка данных с помощью pandas
  22. Генераторы в Python
  23. Оптимизация интернирования строк
  24. Конвертация изображений в PDF
  25. Перехват исключений в Python
  26. Выход из профиля в Django
  27. Извлечение данных из JSON
  28. Управление памятью в Python
  29. Использование defaultdict в Python
  30. Реверс строки и списка в Python.
  31. Python Метод sleep() из time
  32. Строки в Python: апострофы и кавычки
  33. Библиотека funcy: удобные утилиты
  34. Счетчик в Python: most_common()
  35. Метод lt для сортировки объектов
  36. Фильтрация списка чисел
  37. Заказ карты Тинькофф Black
  38. Чтение бинарного файла в Python.
  39. Копирование объектов в Python
  40. Переворот строки
  41. Python: библиотеки и функции
  42. Работа с множествами в Python
  43. Сортировка списка по индексам
  44. Beautiful Soup — извлечение данных из HTML
  45. Замена переменных в Python

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