Курс 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. Метод __complex__ в Python
  2. Метод join() для объединения элементов в строку.
  3. Работа с типами данных в Python с помощью pydantic.
  4. Создание графиков в терминале
  5. Создание Telegram-бота на Python
  6. Удаление дубликатов из списка с помощью dict.fromkeys
  7. Применение функции map() с лямбда-функциями
  8. Подсчет часто встречающихся элементов
  9. Анонимные функции в Python
  10. Конвертация текстовых чисел с помощью Numerizer
  11. Обмен переменными в Jupyter
  12. Определение основы слова с showballstemmer
  13. Преобразование числа в список цифр
  14. Метод bool() в Python
  15. Именованные срезы в Python
  16. Преобразование строк в числа с плавающей запятой
  17. Функции all и any в Python
  18. Пропуск строк в файле с itertools
  19. Обмен значений переменных в Python
  20. Работа с контекстными менеджерами
  21. Логирование с Logzero
  22. Сортировка данных с лямбда-функциями
  23. UserString в Python
  24. Создание словарей и множеств в Python
  25. Функция pow() — возвести число в степень
  26. Использование super() в Python
  27. Операторы объединения в Python 3.9
  28. Хэш-функции и метод цепочек
  29. Python: библиотеки и функции
  30. Глобальные переменные в Python
  31. Оптимизация памяти с помощью __slots__
  32. Работа со списками
  33. Работа с очередями в Python
  34. Обработка ошибок в Python
  35. Python: Фильтрация списков с помощью filter()
  36. Функции высшего порядка в Python
  37. Ветвление выражения в Python
  38. Сортировка элементов с OrderedDict
  39. Работа с SQLite в Python
  40. Блок try…finally в Python
  41. Подсказки при вводе данных в Python
  42. Возврат нескольких значений
  43. Работа с функцией next() в Python
  44. Поток данных в Python
  45. Операторы сравнения в Python
  46. Работа с географическими данными в Python
  47. Умножение строк и списков

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