Курс 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. Отображение HTML кода в Python
  2. Создание словарей в Python
  3. Проверка типа объекта в Python
  4. Список переменных с %who
  5. Блок else в циклах.
  6. Работа с геоданными с помощью geopy
  7. Группировка элементов Python
  8. 9 уловок для чистого кода
  9. Нахождение хеша для бесконечности и NaN в Python
  10. Метод lt для сортировки объектов
  11. Комментарии в Python
  12. Лямбда-функции для min/max
  13. Блок try…finally в Python
  14. Python и Юникод: работа с цифрами
  15. Динамическая типизация в Python
  16. Множественное назначение в Python
  17. Перезагрузка оператора в Python
  18. Создание коллекций из выражения-генератора
  19. Работа с изменяемыми коллекциями
  20. Переопределение унарных операторов
  21. Создание виртуальной среды
  22. Удаление дубликатов в pandas
  23. Преобразование Excel в PDF с Spire.XLS
  24. Печать списка с помощью метода join
  25. Установка максимального количества цифр
  26. Множества и frozenset
  27. Magic Commands — улучшение работы с Python
  28. Работа с NumPy
  29. Получение текущего времени в Python
  30. Форматирование строк в Python
  31. Фильтрация списка чисел
  32. Конкатенация строк с методом join()
  33. Генерация случайных чисел Python
  34. Декоратор Property в Python
  35. Проверка типов с помощью isinstance
  36. Списки в Python
  37. Склеивание строк без циклов
  38. Избегайте использования goto
  39. Модуль xkcd: добавление юмора в Python
  40. Извлечение новостей с newspaper3k
  41. Форматирование кода на Python
  42. Bootle — простой веб-фреймворк
  43. Работа со строками в Python
  44. Подсказки типов в Python
  45. Генерация случайных данных в NumPy
  46. Резервирование символов в Python
  47. Анонимные функции в Python
  48. Объединение словарей в Python 3.5+
  49. Форматирование вывода списков
  50. Docstring в Python

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