Курс 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. Создание словарей с defaultdict()
  2. Обработка аргументов Python
  3. Преобразование регистра строк
  4. Цикл for в Python
  5. Оболочка Python
  6. Объединение списков в Python
  7. Применение промокода в Много лосося
  8. Официальный канал Python в Telegram
  9. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  10. Solidity для DeFi Ethereum
  11. Numpy: разбиение массивов
  12. Создание списков в Python
  13. Работа с модулем random
  14. Работа со временем в Python
  15. Избегание циклических зависимостей классов в Python
  16. Закрытие файла в Python
  17. Декоратор total_ordering для сравнения объектов
  18. Операторы увеличения и уменьшения в Python
  19. Особенности ключей словаря в Python
  20. Перевернуть список в Python
  21. Аннотации типов в Python
  22. Форматирование строк в Python
  23. Циклы for в Python
  24. Обработка исключений в Python
  25. Оператор обр. импликации
  26. Обработка исключений
  27. Идентификатор объекта в Python
  28. Лямбда-функции в Python
  29. Подсчет элементов в Python
  30. Разница между датами
  31. PrettyTable: создание таблицы
  32. Определение функций с необязательными аргументами
  33. Слияние словарей в Python 3.9
  34. Создание списков в Python
  35. Переменная Шредингера
  36. Создание множества в Python
  37. Сортировка списка по индексам
  38. Генерация QR-кодов с Python
  39. Потоковый ввод в Python
  40. Python Метод del.
  41. split() без разделителя
  42. Удаление ссылок в Python
  43. Документирование функций в Python
  44. Функция zip() для объединения списков
  45. Управление контекстом выполнения кода
  46. Преобразование списка в словарь через генератор
  47. Big O оптимизация

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