Курс 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. Создание Radio кнопок в tkinter
  2. Функция rsplit() в Python
  3. Капитализация строк
  4. Преобразование букв в нижний регистр
  5. Настройка шрифта и цвета в Tkinter
  6. Повторение элементов в Python
  7. Работа с кортежами
  8. Метод join для объединения строк
  9. Метод get для словаря
  10. Просмотр внешнего файла в Python
  11. Работа с словарями в Python
  12. CSV строка разделение в Python
  13. Python Calendar Usage
  14. Установка и использование Telegram API в Python
  15. Повторение элементов в Python
  16. Разделение строки с помощью split()
  17. Представление бесконечности в Python
  18. Генераторы по генератору
  19. Вызов внешних программ в Python с помощью sh
  20. Работа со строками в Python.
  21. split() — разделение строки
  22. Работа со строками в Python
  23. Работа с CSV файлами в Python
  24. Python: Фильтрация списков с помощью filter()
  25. Оптимизация сравнения в Python
  26. Поиск email
  27. Копирование в Python
  28. Поиск элементов BeautifulSoup
  29. Функция eval() в Python
  30. Копирование списков в Python
  31. Удаление ссылок в Python
  32. Правила именования переменных
  33. Списки в Python
  34. Работа с контекст-менеджером «with»
  35. Метод split() для разделения строк
  36. Проверка списка: any() и all()
  37. Управление асинхронными задачами с помощью Semaphore
  38. Генераторы в Python
  39. Управление асинхронными задачами на Python.
  40. Форматирование объектов с модулем pprint
  41. JMESPath в Python
  42. Работа с множествами в Python
  43. Переменные класса и экземпляра
  44. Defaultdict в Python
  45. Библиотека Emoji: использование смайлов в Python
  46. Декораторы в Python
  47. Показ всплывающих окон Tkinter

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