Курс 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 enumerate() использование
  2. Конкатенация строк в Python
  3. Python 3.12: переиспользование кавычек
  4. Проверка переменных окружения в Python
  5. Проверка однородности элементов списка
  6. Генераторы по генератору
  7. Оптимизация памяти с slots
  8. Порядок операций в Python
  9. Обработка элементов в Python
  10. Оператор деления для класса Rational
  11. Метод enumerate() в Python
  12. Измерение времени выполнения кода в Python
  13. Сортировка элементов в Python
  14. Операции с матрицами в Python
  15. Модуль itertools: эффективная работа с итераторами
  16. Изменение логики работы с временем
  17. Преобразование данных в Python
  18. None в Python: использование и особенности
  19. Получение списка кортежей из словаря
  20. Метод remove() для удаления элемента из списка
  21. Настройка Cron
  22. Поиск файлов по шаблону
  23. Форматирование строк в Python
  24. Python Calendar Usage
  25. Magic Commands — улучшение работы с Python
  26. Функция __init__ в Python
  27. Импорт и использование модулей в Python
  28. Показ всплывающих окон Tkinter
  29. Установка Python — Простое руководство
  30. Обработка ошибок в Python
  31. Возврат значений из генератора
  32. TypedDict для kwargs в Python 3.12
  33. Удаление элемента из списка в Python
  34. Работа с argparse
  35. Метод __float__ в Python
  36. Метод округления чисел
  37. Роль ключевого слова self
  38. Объединение коллекций в Python
  39. Генераторы в Python
  40. Метод rlshift для битового сдвига
  41. Lambda Functions in Python
  42. Запуск асинхронной корутины
  43. Обработка исключений в Python 3
  44. Переопределение метода __eq__
  45. Генерация случайных чисел в Python
  46. Область видимости переменных

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