Курс 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. Доступ к локальным переменным
  4. Избегайте двойного подчеркивания
  5. Измерение времени выполнения кода
  6. Контроль точности вывода чисел
  7. Работа с itertools
  8. Простой калькулятор Python
  9. Проверка подстроки в строке с помощью in
  10. Удаление элементов из списка в Python
  11. Работа с изображениями PIL
  12. Модуль xkcd: загрузка комиксов
  13. Преобразование строки в число
  14. Оператор assert в Python
  15. Создание словаря и множества
  16. Именованные кортежи в Python
  17. Мониторинг работы программы Py-spy
  18. Изменение объектов в Python
  19. Вывод с переменной через запятую
  20. Резервирование символов в Python
  21. Работа с deque из collections
  22. Генераторы в Python
  23. Документация функции help() в Python
  24. Цикл for в Python
  25. Объединение строк с помощью метода join
  26. Поиск индекса элемента
  27. Создание файла с проверкой ошибки
  28. Ввод нескольких значений
  29. Декодирование строк в Python
  30. Создание графики с черепахой
  31. Блок else в циклах Python
  32. Форматирование строк с % в Python
  33. Оператор объединения словарей
  34. Профилирование кода на Python
  35. Функция rsplit() в Python
  36. Метод join() для объединения элементов строки
  37. Логирование с Logzero: ротация файла
  38. Инициализация структур данных
  39. Методы list в Python
  40. Операторы присваивания в Python
  41. Фильтрация элементов с помощью islice
  42. Ускорение выполнения кода в Python
  43. Подписка на каналы разработчиков
  44. Объединение словарей в Python

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