Курс 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. Работа с контекст-менеджером «with»
  2. Метод gt в Python
  3. Генерация фальшивых данных с Faker
  4. Синхронизация доступа к ресурсам
  5. Преобразование списков в словарь
  6. Передача аргументов через **arguments
  7. Работа с collections.Counter
  8. Преобразование букв в нижний регистр
  9. Печать календаря в Python
  10. Подсчет вхождений элементов
  11. Создание и операции с дробями
  12. Модуль functools в Python
  13. Работа с множествами в Python
  14. Именование переменных в Python
  15. Перебор элементов списка в Python
  16. Работа с временем в Python
  17. Настройка Cron
  18. Хеширование паролей с солью
  19. Управление сессиями в Python
  20. Метод __irshift__ для побитового сдвига вправо
  21. Структура данных deque в Python
  22. Возврат нескольких значений из функции
  23. Методы Python для работы с данными
  24. Monkey Patching в Python
  25. Удаление пробелов методом translate()
  26. Изменение переменной в Python: nonlocal
  27. Оптимизация создания строк
  28. Оператор «моржа» (Walrus Operator)
  29. Генераторы списков в Python
  30. Управление User-Agent в Python
  31. Создание итератора
  32. Создание списка через итерацию
  33. Lambda-функция в Python: использование с map() и sum()
  34. Работа с необработанными строками
  35. Метод count() для списка
  36. Основы работы с базами данных в Python
  37. Аргумент по умолчанию
  38. Отладка утечек памяти в Python
  39. Разделение строки с помощью re.split()
  40. Форматирование строк в Python
  41. Работа с географическими данными в Python
  42. Округление в Python
  43. Тип данных TypeVarTuple
  44. Работа с файловой системой в Python
  45. Объединение Python и Shell
  46. Создание Telegram-бота на Python

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