Курс Python → Избегайте двойного подчеркивания
При работе с атрибутами в Python, особенно с атрибутами, начинающимися с двойного подчеркивания (__), возникают определенные сложности. В данном случае, чтобы избежать конфликтов имен, мы добавляем префикс или суффикс к атрибуту. Например, в первом фрагменте кода мы добавляем _Yo к атрибуту __honey, чтобы избежать конфликтов с атрибутами других классов.
Однако, второй фрагмент кода не работает по той причине, что Python исключает имена, заканчивающиеся двойным подчеркиванием при искажении имен. Это означает, что добавление префикса или суффикса к атрибуту, заканчивающемуся на двойное подчеркивание, не будет работать.
Для решения этой проблемы можно использовать другие методы, например, использовать одиночное подчеркивание вместо двойного для избежания искажения имен. Также можно переименовать атрибуты так, чтобы они не содержали двойного подчеркивания в конце.
class MyClass:
def __init__(self):
self.__honey = "Delicious honey"
class AnotherClass:
def __init__(self):
self._Yo__honey = "Another delicious honey"
В приведенном примере кода, мы использовали одиночное подчеркивание вместо двойного для атрибута __honey во втором классе, чтобы избежать проблем с искажением имен. Это позволяет нам успешно получить доступ к атрибуту без конфликтов.
Другие уроки курса "Python"
- Контроль точности вывода чисел
- Фильтрация данных в Python.
- Функции высшего порядка в Python
- Форматирование даты с strftime()
- Работа со строками в Python
- Методы __repr__ и __str__ в Python
- Считывание бинарного файла в Python
- Импорт классов из другого файла
- Создание треугольника Паскаля
- Defaultdict в Python
- Использование *args
- Оператор морж в Python 3.8
- Переопределение метода __lshift__
- Метод __iand__ для пользовательских классов
- Bootle — простой веб-фреймворк
- Ветвление выражения в Python
- Работа с исключениями в Python
- Конкатенация строк в Python
- Python Тесты и Гайды
- Метод remove() для удаления элемента из списка
- Операторы сравнения в Python
- Эффективная конкатенация строк с использованием join()
- Работа с комплексными числами в Python
- Структурирование данных с Pydantic
- Настройка вывода NumPy
- Отображение графиков в Jupyter с Matplotlib
- Очистка списка от False, None, 0, «»
- Преобразование кортежа в словарь.
- Библиотека sh: удобные команды терминала
- Логирование в Python
- Ограничение ресурсов в Python
- Работа с библиотекой requests
- Тип данных TypeVarTuple
- Работа с очередями в Python
- Работа с областями видимости переменных
- Кортеж в Python: создание, доступ, изменение
- Непрерывная проверка в Python
- Работа с контекстным менеджером Pool
- Обновление множества в Python
- Создание словарей в Python
- Локальные переменные.
- Конвертация текстовых чисел с помощью Numerizer
- Перемещение и удаление файлов в Python
- Измерение времени выполнения кода
- Отладка кода
- Переворот списка в Python
- Работа с набором данных CIFAR10 в PyTorch
- Роль object и type в Python















