Курс 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"
- Переопределение метода __and__
- Метод pop() списка
- Оператор continue в Python
- Множественные конструкторы в Python
- Ускорение кода с помощью векторизации
- Создание и удаление объектов
- Импорт модуля из другого каталога
- Ветвление выражения в Python
- Выражения-генераторы в Python
- ChainMap избыточные ключи
- Оператор in для Python
- Декораторы в Python
- Работа с OpenCV
- Деление в Python
- Преобразование регистра символов
- Блок else в циклах.
- Обработка исключения UnboundLocalError
- Работа с PosixPath() в Python
- Основы работы с os
- Тип CodeType в Python.
- Настройка Cron
- Лямбда-функции в Python
- Отрицательные индексы списков в Python
- PrettyTable: создание таблицы
- Хранение переменных в Python.
- SciPy: широкий функционал для математических операций
- Применение функции map() в Python
- Defaultdict в Python
- Уникальные значения из списка
- Работа с CSV файлами
- Работа со словарями Python
- Python defaultdict добавление ключа
- Преобразование кортежа в словарь.
- Декораторы в Python
- Удаление дубликатов из списка
- Создание новых списков в Python
- Работа с модулем Calendar
- Аннотации типов в Python
- Создание объекта timedelta
- Лямбда-функции в Python
- Генераторы словарей и множеств
- Аргумент по умолчанию
- Получение ID текущего процесса
- Оптимизация гиперпараметров в Python
- Освобождение памяти в Python















