Курс 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. Lambda-функция в Python: использование с map() и sum()
  2. Итерация по коллекции в Python
  3. Список методов и атрибутов
  4. Функции классификации комплексных чисел
  5. Копирование объектов в Python
  6. Вычисление разности множеств в Python
  7. Метод difference_update() — разность множеств
  8. Метод rsub в Python: расширение функциональности вычитания
  9. Python Метод Union Множеств
  10. Очистка данных с Pandas
  11. Объявление переменных в Python
  12. Использование функции enumerate()
  13. Тестирование времени с Freezegun
  14. PATCH-запрос с библиотекой requests
  15. Основы работы с базами данных в Python
  16. Обработка аргументов Python
  17. Преобразование PowerPoint в PDF.
  18. Отладка утечек памяти в Python
  19. Сортировка элементов с OrderedDict
  20. Загрузка постов Instagram
  21. Удаление знаков препинания в Python
  22. Установка и использование Python-dateutil
  23. Проверка списка: any() и all()
  24. Утечки переменных цикла в Python 3.x
  25. Разбиение строки в Python
  26. Создание пользовательской коллекции в Python
  27. Работа с срезами в Python
  28. Компиляция регулярных выражений
  29. Оператор «and» в Python
  30. Инверсия списка/строки в Python
  31. Python reversed() функция
  32. Лямбда-функции в Python
  33. Создание коллекций из генератора
  34. Поиск простых чисел
  35. Работа с массивами в Python
  36. Работа с необработанными строками
  37. Генерация чисел с range()
  38. Замер времени выполнения кода
  39. TypedDict для kwargs в Python 3.12
  40. Работа с парами ключ-значение
  41. Разделение строки на подстроки в Python
  42. Работа со строками в Python.
  43. Получение списка файлов в директории с использованием os
  44. Работа с PosixPath() в Python
  45. Транспонирование матрицы
  46. Codecademy в Telegram
  47. Создание объекта timedelta
  48. Модуль xkcd: добавление юмора в Python

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