Курс 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"
- Склеивание строк без циклов
- Создание генераторов
- Логический оператор «and» в Python
- Логирование в Python
- Работа с итераторами через срезы
- kwargs в Python
- Принципы Zen Python
- Установка и использование модуля Wikipedia
- Работа с комплексными числами в Python
- Операторы объединения в Python 3.9
- Lambda Functions in Python
- Хеши в Python
- Antigravity модуль
- Принципы SRP и OCP
- Работа с IP-адресами в Python
- Передача неизвестных аргументов в Python.
- Оптимизация создания строк
- Замена текста с re.sub()
- Работа со случайными элементами
- Участие в LP стейкинге Waves
- Работа с collections в Python
- Создание новых функций через partial
- Оператор деления для класса Rational
- Создание итератора
- Изменение регистра данных
- Эффективная конкатенация строк в Python
- Разделение строки с регулярными выражениями
- Библиотека schedule: планировщик задач
- Обмен значений переменных в Python
- Вывод с переменной через запятую
- Работа с атрибутом dict
- Проверка подстроки в строке
- Генераторы в Python
- Типы возвращаемых значений в Python
- Работа с файлами в Python
- Модуль inspect: получение информации о объектах
- Резервирование символов в Python
- Генерация QR-кодов с библиотекой qrcode
- Функция enumerate() в Python
- SciPy: широкий функционал для математических операций
- Функция enumerate() — Python
- Возврат нескольких значений из функции
- Определение локальных переменных в Python
- Генератор бросков кубиков
- Оператор continue в Python
- Проверка кортежей.















