Курс 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"
- Проверка индексов коллекции
- Профилирование кода
- Комментарии в Python
- Работа с массивами в Python
- Группы исключений в Python
- Обработка исключений
- Конвертация коллекций в Python
- Глубокое копирование объектов
- Тернарный оператор в Python
- Подсчет часто встречающихся элементов
- Метод ifloordiv для пользовательских классов
- Python Метод sleep() из time
- Создание словаря в Python
- Модуль functools в Python
- Кортежи в Python: особенности и преимущества
- Сортировка с параметром key
- Работа с timedelta
- UserString в Python
- Измерение времени выполнения кода в Python
- Вычисление разности множеств в Python
- Тест скорости набора текста на Python
- Функция print() — вывод информации
- Модуль subprocess: запуск внешних команд
- Структурирование данных с Pydantic
- Генератор списка с условием if
- Ветвление выражения в Python
- Многострочные строки в Python
- Проверка на палиндром
- Проверка условий: all и any
- Модуль array: создание и использование массивов
- Работа с модулем random
- Работа с *args и **kwargs в Python
- Функции классификации комплексных чисел
- Методы сравнения множеств
- Получение частей дроби
- Progress с библиотекой tqdm
- Именование столбцов в Python с pandas
- Метод getitem для доступа к элементам последовательности
- Переопределение метода __or__()
- Измерение времени выполнения в Python
- Python: Фильтрация списков с помощью filter()
- Оптимизация параметров в Python
- Установка и использование Telegram API в Python
- Операторы объединения в Python 3.9
- Создание объекта timedelta
- Импорт модулей и пакетов в Python
- Игра «Виселица» на Python















