Курс 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"
- Отображение HTML кода в Python
- Создание словарей в Python
- Проверка типа объекта в Python
- Список переменных с %who
- Блок else в циклах.
- Работа с геоданными с помощью geopy
- Группировка элементов Python
- 9 уловок для чистого кода
- Нахождение хеша для бесконечности и NaN в Python
- Метод lt для сортировки объектов
- Комментарии в Python
- Лямбда-функции для min/max
- Блок try…finally в Python
- Python и Юникод: работа с цифрами
- Динамическая типизация в Python
- Множественное назначение в Python
- Перезагрузка оператора в Python
- Создание коллекций из выражения-генератора
- Работа с изменяемыми коллекциями
- Переопределение унарных операторов
- Создание виртуальной среды
- Удаление дубликатов в pandas
- Преобразование Excel в PDF с Spire.XLS
- Печать списка с помощью метода join
- Установка максимального количества цифр
- Множества и frozenset
- Magic Commands — улучшение работы с Python
- Работа с NumPy
- Получение текущего времени в Python
- Форматирование строк в Python
- Фильтрация списка чисел
- Конкатенация строк с методом join()
- Генерация случайных чисел Python
- Декоратор Property в Python
- Проверка типов с помощью isinstance
- Списки в Python
- Склеивание строк без циклов
- Избегайте использования goto
- Модуль xkcd: добавление юмора в Python
- Извлечение новостей с newspaper3k
- Форматирование кода на Python
- Bootle — простой веб-фреймворк
- Работа со строками в Python
- Подсказки типов в Python
- Генерация случайных данных в NumPy
- Резервирование символов в Python
- Анонимные функции в Python
- Объединение словарей в Python 3.5+
- Форматирование вывода списков
- Docstring в Python















