Курс 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"

  1. Ускорение выполнения кода в Python
  2. Повторение и перенос строки
  3. Нахождение хеша для бесконечности и NaN в Python
  4. Нахождение пересечения множеств
  5. Python: Splat-оператор и splatty-splat
  6. Измерение времени выполнения кода
  7. Python Метод sleep() времени
  8. Измерение потребления памяти при сортировке
  9. Просмотр атрибутов и методов класса
  10. Переворот строки
  11. Измерение времени выполнения в Python
  12. Bootle — простой веб-фреймворк
  13. Измерение времени выполнения кода
  14. Логирование в Python
  15. Обезопасьте ввод данных
  16. Создание вложенного генератора
  17. Выражения-генераторы в Python
  18. Любовь к Python
  19. Функции в Python: создание и вызов
  20. Объединение кортежей в Python
  21. Мониторинг памяти с Pympler
  22. Метаклассы в Python
  23. Блок try…finally в Python
  24. Новшества Flask 2.0
  25. Howdoi — получение ответов из терминала
  26. Обратное распространение ошибки
  27. Запуск асинхронной корутины
  28. Сравнение объектов в Python
  29. Работа с PosixPath() в Python
  30. Python Ellipsis использование
  31. Расчет времени выполнения кода
  32. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  33. Обработка исключений в Python
  34. Генераторы в Python
  35. Комментарии в Python
  36. Работа с очередями в Python
  37. Объединение коллекций в Python
  38. Работа с deque в Python
  39. Списки: объединение, изменение
  40. Декоратор для группы пользователей в Django
  41. Декоратор Ajax required
  42. Генераторы списков
  43. Особенности множеств в Python
  44. Метод rsub в Python: расширение функциональности вычитания
  45. Создание файла с проверкой ошибки
  46. Создание словарей в Python
  47. Python enumerate() использование

Marketello читают маркетологи из крутых компаний