Курс 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. Переворот списка в Python
  3. Создание списков в Python
  4. Работа с комплексными числами в Python
  5. Декодирование строк в Python
  6. Инверсия списка и строки
  7. Освобождение памяти в Python
  8. Работа со словарями Python
  9. Непрерывная проверка в Python
  10. Сложение матриц в NumPy
  11. Склеивание строк через метод join()
  12. Транспонирование 2D-массива с помощью zip
  13. Работа с прокси в Python
  14. Тайное преобразование типа ключа
  15. Импорт с альтернативным именем
  16. Метод rrshift для пользовательских объектов
  17. Генераторы в Python
  18. Объединение словарей в Python 3.5+
  19. Искажение имен в Python
  20. Ввод нескольких значений
  21. Удаление элемента по индексу
  22. Переменные класса и экземпляра
  23. Декоратор total_ordering для сравнения объектов
  24. Подсказки типов в Python
  25. Избегайте пустого списка
  26. Установка и обучение ChatterBot
  27. Условные выражения в Python
  28. Метод rmatmul для пользовательских матриц
  29. Выражения-генераторы в Python
  30. Обязательные аргументы в Python
  31. Роль запятой в Python
  32. Генерация резюме в Gensim
  33. Python: динамическая типизация и проверка типов
  34. Работа с YAML в Python
  35. Функция all() в Python
  36. Объединение словарей в Python
  37. Python Calendar Usage
  38. Оператор морж в Python 3.8
  39. Скрытие вывода данных
  40. Декораторы классов
  41. Метод append() для списка
  42. Извлечение статей с newspaper3k
  43. Копирование словарей и списков в Python
  44. Ошибка NotImplemented в Python

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