Курс 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. Установка и использование Virtualenv
  3. Метод __ixor__ для побитового исключающего ИЛИ
  4. Передача словаря через **kwargs
  5. Определение локальных переменных в Python
  6. Функция enumerate в Python
  7. Работа с необработанными строками
  8. Удаление дубликатов с помощью множеств
  9. Различия символов в Python
  10. Python: изменяемые и неизменяемые коллекции
  11. Добавление элементов в список
  12. Сравнение строк в Python
  13. Вычисление натуральных логарифмов в NumPy
  14. Сортировка элементов с OrderedDict
  15. Работа со словарями
  16. Функция zip() в Python
  17. Работа с timedelta в Python
  18. Python Calendar Usage
  19. Проверка типов с использованием isinstance
  20. Безопасный доступ к значениям словаря
  21. Запуск внешнего кода в Jupyter
  22. Уникальность ключей в словаре
  23. Генераторы в Python
  24. Отладка утечек памяти в Python
  25. Создание матрицы в Python
  26. Обработка ошибок в Python
  27. Работа со стеком в Python
  28. Работа с *args и **kwargs в Python
  29. Считывание бинарного файла в Python
  30. Основы работы с базами данных в Python
  31. Применение функции к элементам списка
  32. Измерение потребления памяти при сортировке
  33. Преобразование чисел в восьмеричную строку
  34. Хранение переменных в Python.
  35. Очистка данных в Python
  36. Функция с *args.
  37. Измерение времени выполнения кода
  38. Библиотека funcy: удобные утилиты
  39. Распаковка аргументов в Python
  40. Генераторы в Python
  41. Установка пакетов с помощью pip
  42. Измерение времени выполнения кода

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