Курс 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"
- Декораторы в Python
- PEP-401: оператор
- Документация функции help() в Python
- Проверка однородности элементов списка
- Получение текущего времени в Python
- Оператор (*) в Python
- Создание вложенных циклов for
- Удаление дубликатов из списка
- Замена элементов в списке с помощью генераторов списков
- Изменение списка срезами
- Атрибуты массивов в Numpy
- Функции range() в Python
- Руководство по использованию Colorama
- Декораторы в Python
- Стать Python-разработчиком
- Принципы программирования
- Обработка исключений в Python
- Освобождение памяти в Python
- Работа с контекст-менеджером «with»
- Оператор «is not» в Python
- Строки в Python: апострофы и кавычки
- Python 3.12: переиспользование кавычек
- Счетчик в Python: most_common()
- Подсчет вхождений элементов
- Объединение словарей в Python
- Удаление элементов из списка
- Оператор assert в Python
- Выход из профиля в Django
- Распаковка аргументов в Python
- Управление контекстом выполнения кода
- Проверка на палиндром
- Поиск простых чисел
- Основы Python
- Регистрация на курсы SF Education
- Расчет времени выполнения кода
- Сортировка данных с лямбда-функциями
- Создание функций с произвольным количеством аргументов
- Множественное назначение в Python
- Определение относительного пути
- Принципы LSP и ISP в Python
- Использование функции enumerate()
- Работа с файлами в Python
- Magic Commands — улучшение работы с Python
- Класс-оболочка для словарей
- Разность множеств
- Явный импорт переменных















