Курс 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
- Повторение и перенос строки
- Нахождение хеша для бесконечности и NaN в Python
- Нахождение пересечения множеств
- Python: Splat-оператор и splatty-splat
- Измерение времени выполнения кода
- Python Метод sleep() времени
- Измерение потребления памяти при сортировке
- Просмотр атрибутов и методов класса
- Переворот строки
- Измерение времени выполнения в Python
- Bootle — простой веб-фреймворк
- Измерение времени выполнения кода
- Логирование в Python
- Обезопасьте ввод данных
- Создание вложенного генератора
- Выражения-генераторы в Python
- Любовь к Python
- Функции в Python: создание и вызов
- Объединение кортежей в Python
- Мониторинг памяти с Pympler
- Метаклассы в Python
- Блок try…finally в Python
- Новшества Flask 2.0
- Howdoi — получение ответов из терминала
- Обратное распространение ошибки
- Запуск асинхронной корутины
- Сравнение объектов в Python
- Работа с PosixPath() в Python
- Python Ellipsis использование
- Расчет времени выполнения кода
- Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
- Обработка исключений в Python
- Генераторы в Python
- Комментарии в Python
- Работа с очередями в Python
- Объединение коллекций в Python
- Работа с deque в Python
- Списки: объединение, изменение
- Декоратор для группы пользователей в Django
- Декоратор Ajax required
- Генераторы списков
- Особенности множеств в Python
- Метод rsub в Python: расширение функциональности вычитания
- Создание файла с проверкой ошибки
- Создание словарей в Python
- Python enumerate() использование















