Курс 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. Контроль точности вывода чисел
  2. Фильтрация данных в Python.
  3. Функции высшего порядка в Python
  4. Форматирование даты с strftime()
  5. Работа со строками в Python
  6. Методы __repr__ и __str__ в Python
  7. Считывание бинарного файла в Python
  8. Импорт классов из другого файла
  9. Создание треугольника Паскаля
  10. Defaultdict в Python
  11. Использование *args
  12. Оператор морж в Python 3.8
  13. Переопределение метода __lshift__
  14. Метод __iand__ для пользовательских классов
  15. Bootle — простой веб-фреймворк
  16. Ветвление выражения в Python
  17. Работа с исключениями в Python
  18. Конкатенация строк в Python
  19. Python Тесты и Гайды
  20. Метод remove() для удаления элемента из списка
  21. Операторы сравнения в Python
  22. Эффективная конкатенация строк с использованием join()
  23. Работа с комплексными числами в Python
  24. Структурирование данных с Pydantic
  25. Настройка вывода NumPy
  26. Отображение графиков в Jupyter с Matplotlib
  27. Очистка списка от False, None, 0, «»
  28. Преобразование кортежа в словарь.
  29. Библиотека sh: удобные команды терминала
  30. Логирование в Python
  31. Ограничение ресурсов в Python
  32. Работа с библиотекой requests
  33. Тип данных TypeVarTuple
  34. Работа с очередями в Python
  35. Работа с областями видимости переменных
  36. Кортеж в Python: создание, доступ, изменение
  37. Непрерывная проверка в Python
  38. Работа с контекстным менеджером Pool
  39. Обновление множества в Python
  40. Создание словарей в Python
  41. Локальные переменные.
  42. Конвертация текстовых чисел с помощью Numerizer
  43. Перемещение и удаление файлов в Python
  44. Измерение времени выполнения кода
  45. Отладка кода
  46. Переворот списка в Python
  47. Работа с набором данных CIFAR10 в PyTorch
  48. Роль object и type в Python

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