Курс 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"
- Удаление дубликатов с помощью множеств
- Срез списка в Python
- Разделение строки с помощью split()
- Работа с набором данных CIFAR10 в PyTorch
- Объединение списков в Python
- Отладка в Python
- Основы работы с базами данных в Python
- Избегайте изменяемых аргументов
- Транспонирование 2D-массива с помощью zip
- PUT запрос для обновления данных
- Проверка существования переменной с оператором :=
- Генераторы списков в Python
- Добавление Progressbar в Python
- Распаковка аргументов в Python
- Добавление кнопки в tkinter
- Работа с изменяемыми коллекциями
- Удаление элементов из списка
- Применение функции к каждому элементу списка
- Обратный список чисел
- Любовь к Python
- Профилирование данных с Pandas.
- Тернарный оператор в Python
- Переопределение метода len
- Декораторы в Python
- Установка библиотек в Python
- Ограничение итераций в Python
- Отладка кода
- Улучшенные подсказки для импорта в Python 3.12
- Оператор * в Python
- Namedtuple в Python
- Создание и удаление объектов
- Избегайте ошибку FileNotFoundError
- Преобразование числа в список цифр
- Библиотека wikipedia для Python
- Установка User-Agent в Python
- Генераторы в Python
- Создание уникального проекта
- Список переменных в Python
- Выражения-генераторы в Python
- Аннотации типов в Python
- Множественное наследование в Python
- Проекты на Python
- Многопоточность и асинхронное программирование в Python
- Функции высшего порядка в Python
- Оптимизация параметров в Python
- Срезы в Numpy
- Контроль точности вывода чисел















