Курс 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. Объединение строк с помощью метода join
  3. Оператор in для проверки наличия элемента
  4. Метод join для объединения строк
  5. Хеширование паролей с солью
  6. Работа с *args и **kwargs в Python
  7. Импорт модулей и пакетов в Python
  8. Изучение объектов с помощью dir()
  9. Лимиты на ресурсы Python
  10. CSV строка разделение в Python
  11. Округление дробей в Python
  12. Возврат нескольких значений из функции
  13. Установка и использование Logzero
  14. Установка User-Agent в Python
  15. Преобразование range в итератор
  16. Переопределение метода len
  17. Обработка элементов в Python
  18. Встроенные функции Python
  19. Избегайте ошибку FileNotFoundError
  20. Отправка POST-запроса в REST API
  21. Преобразование Excel в PDF с Spire.XLS
  22. Функциональное программирование.
  23. Конкатенация строк в Python
  24. Оператор объединения словарей
  25. Преобразование числа в восьмеричную строку
  26. Генераторные функции в Python
  27. Прокачанный трейсинг ошибок
  28. Метод is_absolute() для PurePath
  29. Объявление переменных в Python
  30. Передача неизвестных аргументов в Python.
  31. Сравнение объектов в Python
  32. Поиск элементов BeautifulSoup
  33. Метод __ilshift__ для битового сдвига влево
  34. Создание директории в Python
  35. Основы Python
  36. Распаковка элементов последовательности
  37. Создание класса очереди
  38. Присвоение значений переменным в Python
  39. Выборка чисел
  40. Функция с **kwargs в Python
  41. Преобразование данных в Python
  42. Многострочные комментарии в Python
  43. Настройка шрифта и цвета в Tkinter
  44. Разделение строки с помощью re.split()

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