Курс 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. Генераторные выражения и islice.
  2. Метод remove() для удаления элемента из списка
  3. Работа с модулем cmath
  4. Порядок и длина множеств в Python
  5. Поиск подстроки в строке
  6. Именованные срезы в Python
  7. Руководство по использованию Colorama
  8. Чтение и запись TOML-конфигов
  9. Быстрый поиск кода
  10. Вывод сложных структур данных с помощью pprint
  11. Форматирование кода на Python
  12. Работа с необработанными строками
  13. Многопоточность в Python
  14. GitHub в Telegram: подписка на уведомления
  15. Инверсия списков и строк в Python
  16. Взаимодействие с внешними процессами в Python
  17. Модуль inspect
  18. Удаление знаков препинания в Python
  19. Создание копии списка в Python
  20. Работа с временем в Python
  21. Преобразование объекта в строку
  22. Работа с срезами в Numpy
  23. Очистка списка от False, None, 0, «»
  24. Оператор (*) в Python
  25. Измерение времени выполнения кода
  26. Многострочные комментарии в Python
  27. Python Тесты и Гайды
  28. Модуль subprocess: запуск внешних команд
  29. Поиск частого элемента
  30. Добавление цвета в консоли
  31. Модуль math: основные функции
  32. Шаблоны и наследование в Flask
  33. Переопределение метода sub
  34. Хеширование паролей с использованием salt
  35. Управление ресурсами в Python
  36. Отправка поздравлений по дню рождения
  37. Тестирование с responses
  38. Функция с **kwargs в Python
  39. Преобразование текста в нижний регистр
  40. Объединение словарей в Python
  41. Получение обратного списка чисел
  42. Метод get() в Python
  43. Декоратор проверки активности
  44. Работа с прокси в Python

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