Курс 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. Оператор space-invader
  3. Метод difference_update() — разность множеств
  4. Просмотр атрибутов и методов класса
  5. Работа со словарями в Python
  6. Извлечение чисел из текста
  7. Импорт модулей в Python 3.12
  8. Преобразование чисел в слова
  9. None в Python: использование и особенности
  10. Применение функции map() в Python
  11. Метод __complex__ в Python
  12. Работа с комплексными числами в Python
  13. Отправка POST запроса на сервер.
  14. Получение атрибутов и методов класса
  15. Порядок и длина множеств в Python
  16. Команда %dhist — список посещенных каталогов
  17. Удаление символа из строки
  18. Сглаживание списка
  19. Объединение словарей в Python
  20. Удаление ключей из словаря
  21. Работа с zip()
  22. Создание треугольника Паскаля
  23. Структура данных deque в Python
  24. Сравнение объектов в Python
  25. Enum в Python
  26. Фильтрация входных данных в Python
  27. Получение пути к текущему скрипту с помощью os
  28. Преобразование вложенного списка
  29. Поиск кода
  30. Работа с Enum в Python3.
  31. Defaultdict в Python
  32. Работа с изображениями PIL
  33. Профилирование с Pandas
  34. Получение текущей даты и времени с помощью datetime
  35. Генераторы данных
  36. Обновление ключей в Python
  37. Просмотр внешнего файла в Python
  38. Модуль inspect
  39. Удаление символов новой строки в Python.
  40. Преобразование объекта в строку
  41. Методы в Python
  42. Управление контекстом выполнения
  43. Нан-рефлексивность в Python
  44. Асинхронное программирование с asyncio
  45. Тайное преобразование типа ключа
  46. Декораторы классов
  47. Создание функций с произвольным количеством аргументов

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