Курс 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"
- Атрибуты класса и экземпляра
- Объединение строк с помощью метода join
- Оператор in для проверки наличия элемента
- Метод join для объединения строк
- Хеширование паролей с солью
- Работа с *args и **kwargs в Python
- Импорт модулей и пакетов в Python
- Изучение объектов с помощью dir()
- Лимиты на ресурсы Python
- CSV строка разделение в Python
- Округление дробей в Python
- Возврат нескольких значений из функции
- Установка и использование Logzero
- Установка User-Agent в Python
- Преобразование range в итератор
- Переопределение метода len
- Обработка элементов в Python
- Встроенные функции Python
- Избегайте ошибку FileNotFoundError
- Отправка POST-запроса в REST API
- Преобразование Excel в PDF с Spire.XLS
- Функциональное программирование.
- Конкатенация строк в Python
- Оператор объединения словарей
- Преобразование числа в восьмеричную строку
- Генераторные функции в Python
- Прокачанный трейсинг ошибок
- Метод is_absolute() для PurePath
- Объявление переменных в Python
- Передача неизвестных аргументов в Python.
- Сравнение объектов в Python
- Поиск элементов BeautifulSoup
- Метод __ilshift__ для битового сдвига влево
- Создание директории в Python
- Основы Python
- Распаковка элементов последовательности
- Создание класса очереди
- Присвоение значений переменным в Python
- Выборка чисел
- Функция с **kwargs в Python
- Преобразование данных в Python
- Многострочные комментарии в Python
- Настройка шрифта и цвета в Tkinter
- Разделение строки с помощью re.split()















