Курс 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. Удаление дубликатов с помощью множеств
  3. Многострочные комментарии в Python
  4. Метод enumerate() в Python
  5. Определение размера папок в Python
  6. Ветвление выражения в Python
  7. Сглаживание списка
  8. Декораторы в Python
  9. Добавление цвета в консоли
  10. Структурирование данных с Pydantic
  11. Метод __call__ в Python
  12. Очистка входных данных
  13. Удаление элементов во время итерации
  14. Форматирование данных с помощью pprint
  15. Переопределение метода delitem в Python
  16. Руководство по библиотеке pydantic
  17. Применение функции к списку
  18. Работа с библиотекой requests
  19. Python itertools combinations() — группировка элементов
  20. Логирование в Python
  21. Измерение времени выполнения кода
  22. Управление контекстом выполнения кода
  23. Заказ карты Тинькофф Black
  24. Срез в Python
  25. Разделение строки с помощью re.split()
  26. Итерация по коллекции в Python
  27. Комплексные числа в Python
  28. lru_cache оптимизация функций
  29. Оптимизация памяти с помощью __slots__
  30. Сумма элементов списка
  31. Генерация случайных данных в NumPy
  32. Метод is_absolute() для PurePath
  33. Разница между датами
  34. Операции с кортежами
  35. Просмотр внешних файлов в %pycat
  36. Удаление пробелов методом translate()
  37. Проверка на палиндром
  38. Оператор «and» в Python
  39. Оператор assert в Python
  40. Модуль itertools: комбинации и перестановки
  41. Функции в одну строку
  42. Символ подчеркивания в Python
  43. Отладка кода
  44. Объединение кортежей в Python
  45. Функция zip() — объединение последовательностей

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