Курс 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"
- Парсинг веб-страниц с Beautiful Soup
- Метод title() в Python
- Метод округления чисел
- Howdoi — получение ответов из терминала
- Метод eq для сравнения объектов
- История Python
- Поиск наиболее частого элемента в списке
- %pinfo: получение информации об объекте
- Метод __irshift__ для Python
- Импортирование в Python
- Применение промокода в Много лосося
- Удаление файлов с shutil.os.remove()
- Метод join() для объединения элементов строки
- Генератор списка с условием if
- Ошибка NotImplemented в Python
- Работа с zip-архивами в Python
- Группы исключений в Python
- Сортировка данных с лямбда-функциями
- Встроенные функции Python
- Работа с GitHub в Telegram
- Идентификатор объекта в Python
- Работа с Enum в Python3.
- Работа с часовыми поясами в Python.
- Псевдонимы в Python
- Определение имен функций
- Функция product() в Python
- Многострочные комментарии в Python
- Форматирование строк в Python
- Работа с изображениями Pillow
- Замена переменных в Python
- Функция с *args.
- Подсчет вхождений элементов
- Удаление элементов из списка в Python
- Создание класса очереди
- Именованные аргументы в Python
- Логические операторы в Python
- Изменения в обработке логических значений
- Работа с множествами в Python
- Функция enumerate в Python
- Оформление кода на Python
- Введение в Python
- Сортировка в Python
- Создание итератора
- Создание комплексных чисел
- Перегрузка операторов в Python
- Фильтрация списка чисел















