Курс 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"
- Метод __complex__ в Python
- Метод join() для объединения элементов в строку.
- Работа с типами данных в Python с помощью pydantic.
- Создание графиков в терминале
- Создание Telegram-бота на Python
- Удаление дубликатов из списка с помощью dict.fromkeys
- Применение функции map() с лямбда-функциями
- Подсчет часто встречающихся элементов
- Анонимные функции в Python
- Конвертация текстовых чисел с помощью Numerizer
- Обмен переменными в Jupyter
- Определение основы слова с showballstemmer
- Преобразование числа в список цифр
- Метод bool() в Python
- Именованные срезы в Python
- Преобразование строк в числа с плавающей запятой
- Функции all и any в Python
- Пропуск строк в файле с itertools
- Обмен значений переменных в Python
- Работа с контекстными менеджерами
- Логирование с Logzero
- Сортировка данных с лямбда-функциями
- UserString в Python
- Создание словарей и множеств в Python
- Функция pow() — возвести число в степень
- Использование super() в Python
- Операторы объединения в Python 3.9
- Хэш-функции и метод цепочек
- Python: библиотеки и функции
- Глобальные переменные в Python
- Оптимизация памяти с помощью __slots__
- Работа со списками
- Работа с очередями в Python
- Обработка ошибок в Python
- Python: Фильтрация списков с помощью filter()
- Функции высшего порядка в Python
- Ветвление выражения в Python
- Сортировка элементов с OrderedDict
- Работа с SQLite в Python
- Блок try…finally в Python
- Подсказки при вводе данных в Python
- Возврат нескольких значений
- Работа с функцией next() в Python
- Поток данных в Python
- Операторы сравнения в Python
- Работа с географическими данными в Python
- Умножение строк и списков















