Курс 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. Подсказки типов в Python
  3. Генерация фальшивых данных с Faker
  4. Множественное назначение в Python
  5. JSON-esque в Python
  6. Метод join() для объединения элементов
  7. Хранение данных
  8. Роль object и type в Python
  9. Фильтрация входных данных в Python
  10. Обратный список чисел
  11. Показ всплывающих окон Tkinter
  12. Переменная Шредингера
  13. Делегирование в Python
  14. Работа с Path в Python
  15. Рекурсия для обращения строки
  16. Функция с *args.
  17. Вычисление разности множеств в Python
  18. Копирование словарей и списков в Python
  19. Вывод с переменной через запятую
  20. Распаковка аргументов в Python
  21. Возврат нескольких значений
  22. Поиск шаблона в строке
  23. Получение имени функции с помощью inspect
  24. Проверка дублей в списке.
  25. Выход из профиля в Django
  26. Создание панели меню Tkinter
  27. Разделение строк в Python
  28. Срезы в Python
  29. Замыкания в Python
  30. Преобразование range в итератор
  31. Использование модуля math
  32. Создание вложенного генератора
  33. Возведение в квадрат с помощью itertools
  34. Создание и удаление объектов
  35. Преобразование текста в нижний регистр
  36. Сортировка и разворот списка
  37. Pretty-printing JSON в Python
  38. Python Enumerate
  39. Работа с множествами в Python
  40. Перемешивание списка с shuffle()
  41. Логирование с Loguru
  42. Retrying в Python: повторные вызовы
  43. Обновление и получение данных в SQLite
  44. Комплексные числа в Python
  45. Преобразование вложенного списка
  46. Структуры данных в Python
  47. Оптимизация поиска в словарях
  48. Разработка игры Pong с turtle

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