Курс 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"
- Поиск с библиотекой Google
- Необязательные аргументы в Python
- Цикл for в Python
- Добавление Progressbar в Python
- Python: отсутствие точек с запятыми
- Преобразование регистра строк
- Метод lt для сортировки объектов
- Структурирование именованных констант
- Поиск всех индексов подстроки
- Функция __init__ в Python
- Распаковка аргументов в Python
- Протокол управления контекстом
- Метод matmul для умножения матриц
- Перевод эмодзи и эмотиконов.
- Отправка поздравлений по дню рождения
- Выражения-генераторы в Python
- Определение функций с необязательными аргументами
- Округление банкира в Python
- Проверка на истинность объектов в Python
- Оператор морж в Python 3.8
- Объединение строк с помощью метода join
- Участие в сообществе @selectel
- Перегрузка операторов в Python
- Поиск частого элемента
- Присвоение значений переменным в Python
- Метод add для класса Vector
- Разделение строки на пары ключ-значение.
- Управление браузером с Selenium
- Удаление элементов по срезу
- Область видимости переменных
- Получение локальных переменных в Python
- kwargs в Python
- Модуль Operator в Python
- Многострочные комментарии в Python
- Основные операции с библиотекой Numpy
- Декораторы в Python
- Оптимизация поиска в словарях
- Счетчик ссылок в Python
- Повторение элементов в Python
- Автоматизация действий с Pyautogui
- Генерация случайных данных в NumPy
- Описание скриптов в README
- Создание и использование ChainMap
- Работа с утверждениями в Python
- Метод сравнения объектов в Python
- Создание и инициализация объектов
- Регистрация на TenChat















