Курс 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. Замена текста с re.sub()
  3. Множественное назначение в Python
  4. Работа со словарями Python
  5. Асинхронное выполнение задач в процессах
  6. Декораторы в Python
  7. Python Calendar Usage
  8. Функция findall() для поиска вхождений строки
  9. Использование модуля __future__
  10. Работа со строками в Python
  11. Списки в Python
  12. Работа с асинхронными задачами в Python
  13. Генератор списка в Python
  14. Работа с очередями в Python
  15. Отрицательные индексы списков
  16. Работа с JSON в Python
  17. Область видимости переменных
  18. Сравнение def и lambda функций в Python
  19. Flask — веб-фреймворк Python
  20. Импортирование в Python
  21. Изменение элемента списка
  22. Метод init в Python
  23. Управление контекстом выполнения
  24. Удаление эмодзи с помощью pandas
  25. Создание таблиц в Python с PrettyTable
  26. Создание списков в Python
  27. Построение графиков в Matplotlib
  28. Namedtuple в Python
  29. Основные операции с Numpy
  30. Декораторы в Python
  31. Транспонирование 2D-массива с помощью zip
  32. Python UserString — создание подклассов строк
  33. Lambda-функция в Python: использование с map() и sum()
  34. Python 3.12: переиспользование кавычек
  35. Нахождение хеша для бесконечности и NaN в Python
  36. Работа с комплексными числами
  37. Особенности запятых в Python
  38. Функция print() — вывод информации
  39. Проверка списка: any() и all()
  40. Присвоение и ссылки
  41. Преобразование типов данных в set comprehension
  42. Отладка регулярных выражений в Python
  43. Работа с аргументами командной строки
  44. Методы обработки строк в Python
  45. Проверка окончания строки с помощью str.endswith()
  46. Создание графиков в терминале
  47. Дизассемблирование Python кода
  48. Многострочные строки в Python
  49. Участие в LP стейкинге Waves

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