Курс 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. Логический оператор «and» в Python
  4. Логирование в Python
  5. Работа с итераторами через срезы
  6. kwargs в Python
  7. Принципы Zen Python
  8. Установка и использование модуля Wikipedia
  9. Работа с комплексными числами в Python
  10. Операторы объединения в Python 3.9
  11. Lambda Functions in Python
  12. Хеши в Python
  13. Antigravity модуль
  14. Принципы SRP и OCP
  15. Работа с IP-адресами в Python
  16. Передача неизвестных аргументов в Python.
  17. Оптимизация создания строк
  18. Замена текста с re.sub()
  19. Работа со случайными элементами
  20. Участие в LP стейкинге Waves
  21. Работа с collections в Python
  22. Создание новых функций через partial
  23. Оператор деления для класса Rational
  24. Создание итератора
  25. Изменение регистра данных
  26. Эффективная конкатенация строк в Python
  27. Разделение строки с регулярными выражениями
  28. Библиотека schedule: планировщик задач
  29. Обмен значений переменных в Python
  30. Вывод с переменной через запятую
  31. Работа с атрибутом dict
  32. Проверка подстроки в строке
  33. Генераторы в Python
  34. Типы возвращаемых значений в Python
  35. Работа с файлами в Python
  36. Модуль inspect: получение информации о объектах
  37. Резервирование символов в Python
  38. Генерация QR-кодов с библиотекой qrcode
  39. Функция enumerate() в Python
  40. SciPy: широкий функционал для математических операций
  41. Функция enumerate() — Python
  42. Возврат нескольких значений из функции
  43. Определение локальных переменных в Python
  44. Генератор бросков кубиков
  45. Оператор continue в Python
  46. Проверка кортежей.

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