Курс 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. Преобразование Word в PDF с Spire.Doc
  3. Очистка входных данных
  4. Возврат нескольких значений
  5. Функции map() и reduce() в Python
  6. Подсчет частоты элементов с Counter
  7. Работа с датой и временем в Python
  8. Вызов внешних программ в Python с помощью sh
  9. Фильтрация входных данных в Python
  10. Хеширование паролей с солью
  11. Работа с срезами в Numpy
  12. Участие в LP стейкинге Waves
  13. Декоратор @override
  14. Сравнение строк в Python
  15. Поиск простых чисел
  16. Функции map, filter, reduce
  17. Метод __call__ в Python
  18. Python enumerate() использование
  19. Сохранение Unicode в JSON
  20. Получение частей дроби
  21. Метод rsub в Python: расширение функциональности вычитания
  22. Слияние словарей в Python 3.9
  23. Удаление элементов из списка в Python
  24. ChainMap избыточные ключи
  25. Работа с комбинациями в Python.
  26. Склеивание строк без циклов
  27. Генераторы в Python
  28. Установка максимального количества цифр
  29. Форматирование заголовков в Python
  30. Оптимизация памяти в Python
  31. Запрос DELETE с библиотекой requests
  32. Управление User-Agent в Python
  33. Numpy: использование Ellipsis
  34. Функция zip() в Python
  35. Магические методы в Python
  36. Оптимизация гиперпараметров в Python
  37. Возвращение нескольких значений через кортеж или класс
  38. Генераторы списков
  39. Операторы += в Python
  40. Работа с файловой системой в Python
  41. Замыкания в Python
  42. Фильтрация данных в Python.
  43. Установка и использование pyshorteners
  44. Создание циклической ссылки
  45. Аннотации типов в Python
  46. Измерение времени выполнения кода с использованием time
  47. Генераторы в Python
  48. Возвращение нескольких значений

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