Курс 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"
- Методы __repr__ и __str__ в Python
- Операторы увеличения и уменьшения переменной
- Объединение объектов в Python
- Python: Splat-оператор и splatty-splat
- Хранение данных с помощью dataclasses
- Выражения-генераторы в Python
- Мониторинг работы программы Py-spy
- Работа с enumerate()
- Сортировка в Python
- Каналы Senior: Python, Java, Frontend, SQL, C++
- Метод округления чисел
- Создание класса очереди
- Defaultdict в Python
- Операции с матрицами в Python
- Подсчет количества элементов в списке
- Изменение элемента списка
- Утечки переменных цикла в Python 3.x
- Работа с файлами в Python
- Подсчет элементов в Python
- Вывод букв строки в Python
- Форматирование данных с помощью pprint
- Подсчет частоты элементов с Counter
- Colorama: окрашивание текста в Python
- Преобразование вложенного списка
- Работа с Path в Python
- Доступ к локальным переменным
- Освобождение памяти в Python
- Аргумент по умолчанию
- Особенности множеств в Python
- Codecademy в Telegram
- Обработка исключений
- Получение размера объекта с sys.getsizeof()
- Порядок операций в Python
- Замена символов в Python
- Оператор «not» в Python
- Аргументы *args и **kwargs
- Применение функции map() с лямбда-функциями
- Метод count в Python: почему count(», ») возвращает 4?
- JMESPath в Python
- Ошибка NotImplemented в Python
- Список переменных с %who
- Проверка дублей в списке.
- Форматирование строк в Python
- Просмотр атрибутов и методов класса
- Проверка существования переменной с оператором :=
- Псевдонимы в Python















