Курс 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 Calendar Usage
  2. Работа с дробями в Python
  3. Python Translator: создание локальных переводчиков
  4. Метод split() для разделения строк
  5. Проверка индексов коллекции
  6. Присвоение и ссылки
  7. Создание словаря через dict comprehension
  8. Оптимизация памяти с __slots__
  9. Замена текста с помощью sub
  10. Возвращение нескольких значений
  11. Метод rxor для операции побитового исключающего «или»
  12. Python: отсутствие точек с запятыми
  13. Назначение максимального и минимального значения переменной в Python.
  14. Работа со словарями Python
  15. Транспонирование матрицы в Python
  16. Преобразование данных в Python
  17. Преобразование строки в число
  18. Выключение компьютера с помощью Python
  19. Метод __ixor__ для побитового исключающего ИЛИ
  20. Срезы в Python
  21. Отправка HTTP-запросов в Python
  22. Отладка утечек памяти в Python
  23. Итераторы в Python
  24. Объявление переменных в Python
  25. Создание именованных кортежей в Python
  26. Перехват исключений в Python
  27. Структура строк в Python
  28. Генерация случайных чисел в Python
  29. Работа с множествами в Python
  30. Метод join() для объединения элементов строки
  31. Проверка ввода с помощью isdigit
  32. Pillow: работа с изображениями
  33. Применение функции к списку
  34. Применение команды break
  35. Повторение элементов списков
  36. Работа с изменяемыми списками
  37. Метод rpow в Python
  38. Исключение NotImplementedError
  39. Оператор is в Python
  40. Основные операции с Numpy
  41. Функции в Python
  42. Функция reversed() в Python
  43. Измерение времени выполнения в Python
  44. Область видимости переменных
  45. Работа с модулем cmath

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