Курс 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. Сравнение def и lambda функций в Python
  4. Атрибуты массивов в Numpy
  5. Ускорение обработки данных с %autoawait
  6. Объединение списков с помощью zip
  7. Декораторы в Python
  8. Доступ к локальным переменным
  9. Отладка утечек памяти в Python
  10. Разница между датами
  11. Объединение списков в строку
  12. Переменная с нижним подчеркиванием
  13. Объединение словарей в Python
  14. Операторы увеличения и уменьшения переменной
  15. Оптимизация памяти в Python
  16. Генерация UUID в Python
  17. Создание функций высшего порядка
  18. Декораторы в Python
  19. Работа со строками
  20. Печать комбинаций в Python с Itertools
  21. Python 3.12: переиспользование кавычек
  22. Генерация QR-кодов с Python
  23. Работа с контекстными менеджерами
  24. Функция zip() в Python
  25. Обрезка изображения с Pillow
  26. Логирование с Loguru
  27. Управление контекстом выполнения
  28. Избегание изменяемых аргументов
  29. Поиск с библиотекой Google
  30. Python Метод sleep() времени
  31. Подписка на Kaspersky Team
  32. Pretty-printing JSON в Python
  33. Преобразование текста в нижний регистр
  34. Получение списка файлов в директории с использованием os
  35. Замена текста в Python
  36. Удаление файлов с shutil.os.remove()
  37. Многострочные комментарии в Python
  38. Оформление кода на Python
  39. Работа с JSON данными в Python
  40. Возврат нескольких значений
  41. Списковое включение в Python
  42. Работа с итераторами через срезы

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