Курс 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"
- Преобразование в float
- Освоение Python
- Явный импорт переменных
- Подсказки типов в Python
- Основы работы со строками в Python
- Печать месячного календаря
- Таймер обратного отсчета
- Работа с файлами в Python
- Решатель судоку на Python с pygame
- Сериализация объектов в Python
- Эффективная конкатенация строк в Python
- Форматирование данных с помощью pprint
- Определение объема памяти объекта
- Именованные срезы в Python
- Сравнение def и lambda функций в Python
- Создание файла с проверкой ошибки
- Очистка строки в Python
- Глобальные переменные в Python
- Поиск повторов в списке
- Поиск уникальных и повторяющихся элементов
- Метод __index__ в Python
- Преобразование данных в Python
- Работа с JSON данными в Python
- Изменение логики работы с временем
- Эффективная конкатенация строк с использованием join()
- Обработка исключений
- Операторы объединения в Python 3.9
- Установка и загрузка Instaloader
- globals и locals
- Подсчет элементов в Python
- Функция all() в Python
- Присвоение и ссылки
- Нахождение хеша для бесконечности и NaN в Python
- Исключение NotImplementedError
- Работа с deque из collections
- Распаковка значений в Python
- Метод rpow в Python
- Документирование функций в Python
- Многоточие в Python
- Поиск частых элементов в списке
- Метод join для объединения строк
- Строковое представление объектов
- Комментарии в Python
- ChainMap.new_child() — добавление нового словаря
- Подсчет элементов с помощью Counter из collections
- Работа с часовыми поясами в Python.















