При попытке изменить экземпляру значение class от чего зависит, разрешит ли Python такую замену?
База Hintsage
Модель данных
Протоколы объектов, dunder-методы, дескрипторы и классы.
Практика
Вопросы: Модель данных
При сериализации объекта через pickle класс определяет и reduce_ex, и reduce: какой метод будет выбран первым?
При сравнении объектов метод eq возвращает NotImplemented: как Python выбирает дальнейшее действие?
Что произойдёт с дескриптором, добавленным в класс после его создания, если он рассчитывает на автоматический вызов __set_name__?
На практике объект поддерживает преобразование через __int__, но передаётся в срез: почему этого недостаточно и какой протокол ожидает Python?
Представьте, что нужно изменить результат проверки isinstance для объекта, не меняя его фактический тип: каким механизмом класса это можно сделать?
За счёт чего вызов super() без аргументов понимает текущий класс и экземпляр?
Рассмотрите async for: какое нарушение протокола возникает, если __aiter__ возвращает корутину вместо асинхронного итератора?
Разберите последствия: что происходит с объектом, если его __del__ сохраняет сам объект во внешней переменной?
Каким образом объект, не являющийся классом, может легально участвовать в списке базовых классов при создании нового класса?
Вам передали контекстный менеджер. Определите, дойдёт ли ValueError до обработчика и что напечатает программа.
class CM:
def __enter__(self):
print("enter")
return self
def __exit__(self, exc_type, exc, tb):
print(exc_type.__name__)
return True
try:
with CM():
print("body")
raise ValueError("bad")
except ValueError:
print("propagated")
else:
print("handled")
Класс переопределяет eq, но не объявляет hash: почему его экземпляры перестают быть допустимыми ключами словаря?
При создании класса метакласс задаёт специальное пространство имён: как это меняет выполнение тела класса?
Что делает Python при чтении отсутствующего ключа у подкласса dict с определённым missing?
От чего зависит порядок поиска метода в иерархии классов при множественном наследовании Python?
Сравните приоритет доступа к атрибуту класса: что победит — дескриптор в метаклассе или одноимённый атрибут самого класса?
Как Python обрабатывает подписывание класса квадратными скобками, если в классе определён __class_getitem__?
Удаление атрибута экземпляра срабатывает на дескриптор класса: в каком случае Python вызывает его __delete__, а не удаляет запись экземпляра?
Представьте, что атрибут-дескриптор читают через класс, а не через экземпляр: какое значение получает параметр obj в его get?
В какой момент Python вызывает __init_subclass__ при создании нового класса-наследника?
Показано 21–40 из 50