Курс 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. Профилирование кода
  3. Комментарии в Python
  4. Работа с массивами в Python
  5. Группы исключений в Python
  6. Обработка исключений
  7. Конвертация коллекций в Python
  8. Глубокое копирование объектов
  9. Тернарный оператор в Python
  10. Подсчет часто встречающихся элементов
  11. Метод ifloordiv для пользовательских классов
  12. Python Метод sleep() из time
  13. Создание словаря в Python
  14. Модуль functools в Python
  15. Кортежи в Python: особенности и преимущества
  16. Сортировка с параметром key
  17. Работа с timedelta
  18. UserString в Python
  19. Измерение времени выполнения кода в Python
  20. Вычисление разности множеств в Python
  21. Тест скорости набора текста на Python
  22. Функция print() — вывод информации
  23. Модуль subprocess: запуск внешних команд
  24. Структурирование данных с Pydantic
  25. Генератор списка с условием if
  26. Ветвление выражения в Python
  27. Многострочные строки в Python
  28. Проверка на палиндром
  29. Проверка условий: all и any
  30. Модуль array: создание и использование массивов
  31. Работа с модулем random
  32. Работа с *args и **kwargs в Python
  33. Функции классификации комплексных чисел
  34. Методы сравнения множеств
  35. Получение частей дроби
  36. Progress с библиотекой tqdm
  37. Именование столбцов в Python с pandas
  38. Метод getitem для доступа к элементам последовательности
  39. Переопределение метода __or__()
  40. Измерение времени выполнения в Python
  41. Python: Фильтрация списков с помощью filter()
  42. Оптимизация параметров в Python
  43. Установка и использование Telegram API в Python
  44. Операторы объединения в Python 3.9
  45. Создание объекта timedelta
  46. Импорт модулей и пакетов в Python
  47. Игра «Виселица» на Python

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