Курс 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. Разработка Telegram-ботов
  3. Вычисление натуральных логарифмов в NumPy
  4. Группировка элементов Python
  5. SciPy: широкий функционал для математических операций
  6. Парсинг статей с Newspaper3k
  7. Преобразование символов с помощью map
  8. Создание спинбокса в tkinter
  9. Навыки Python: строки, типы данных
  10. Namedtuple в Python
  11. Метод rename() для переименования файлов и каталогов
  12. Работа с кортежами
  13. Отображение HTML кода в Python
  14. Метод rsub в Python: расширение функциональности вычитания
  15. Функции-генераторы в Python
  16. Профилирование кода
  17. Округление дробей в Python
  18. Игра «Камень, ножницы, бумага» — Python
  19. Кортеж в Python: создание, доступ, изменение
  20. Профилирование кода на Python
  21. Преобразование регистра символов
  22. Использование defaultdict в Python
  23. Переворот строки
  24. Разделение строк методом split()
  25. Объединение словарей в Python 3.5+
  26. Многоточие в Python
  27. Принципы программирования
  28. Работа с defaultdictами в Python
  29. Удаление элемента по индексу в Python
  30. Дизассемблирование Python кода
  31. Оформление кода на Python
  32. Оператор += в Python
  33. Возведение в квадрат с помощью itertools
  34. Метод __irshift__ для побитового сдвига вправо
  35. JMESPath в Python
  36. Работа с классами данных
  37. Генераторы в Python
  38. Поиск самого длинного слова в списке с использованием max()
  39. Библиотека Chartify: руководство
  40. Функция enumerate() в Python
  41. Конвертация текстовых чисел с помощью Numerizer
  42. Flask — веб-фреймворк Python

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