Курс 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. Удаление специальных символов с помощью re.sub
  2. Преобразование чисел в восьмеричную строку
  3. Многоточие в Python
  4. Подсчет элементов с помощью Counter
  5. Тестирование с responses
  6. Декораторы с @wraps
  7. Метод rpow в Python
  8. Изменение списка срезами
  9. Создание словарей с defaultdict
  10. Округление дробей в Python
  11. Присоединение элементов коллекции
  12. Проверка файла .py на синтаксис.
  13. Python defaultdict добавление ключа
  14. Форматирование вывода списков
  15. Новшества Flask 2.0
  16. Справка по импортированным модулям
  17. Оператор «and» в Python
  18. Генератор надежных паролей
  19. Работа с итераторами через срезы
  20. Идентификатор объекта в Python
  21. Метод ipow для возведения в степень
  22. Сериализация и десериализация объектов
  23. Сортировка в Python
  24. Работа со словарями в Python
  25. Регистрация на курсы SF Education
  26. Перевод эмодзи и эмотиконов.
  27. Работа с процессами в Python
  28. Python reversed() функция
  29. Применение функций в Python
  30. Установка пакета в Python
  31. Удаление ключа из словаря
  32. Форматирование строк в Python
  33. Улучшенные подсказки для импорта в Python 3.12
  34. Удаление элемента по индексу
  35. Срез в Python
  36. Работа с массивами в Python
  37. Функция reduce() из модуля functools
  38. Переменные в Python: сокращение гласных
  39. Работа с дробями в Python
  40. Модуль subprocess: запуск внешних команд
  41. Создание даты из строки ISO
  42. Функция map() и ленивая оценка
  43. Python Enumerate

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