Кто перехватывает присваивание атрибута самому классу: его __setattr__ или __setattr__ метакласса?
База Hintsage
Программирование Python
Язык Python и его модель данных.
Темы раздела
Выберите подраздел
- 0 вопросов
Общие вопросы
Смешанные вопросы по Python.
Открыть раздел - 50 вопросов
Python Core
Типы, области видимости, функции, модули и базовая семантика.
Открыть раздел - 50 вопросов
Модель данных
Протоколы объектов, dunder-методы, дескрипторы и классы.
Открыть раздел - 48 вопросов
Коллекции и итераторы
Коллекции, comprehensions, iterators и generators.
Открыть раздел - 50 вопросов
Функции и декораторы
Замыкания, decorators, callable-объекты и управление контекстом.
Открыть раздел - 50 вопросов
Конкурентность и asyncio
Threads, processes, GIL, coroutines и asyncio.
Открыть раздел - 50 вопросов
Память и производительность
Управление памятью, профилирование и оптимизация Python.
Открыть раздел - 50 вопросов
Тестирование
pytest, fixtures, mocks и организация тестов.
Открыть раздел
Практика
Вопросы: Программирование Python
Как наличие слота __weakref__ влияет на возможность создавать слабые ссылки на экземпляры класса со слотами?
В подклассе одноимённым обычным атрибутом заменили унаследованное свойство: почему чтение экземпляра перестало вызывать getter?
Почему sys.getsizeof не показывает полный размер графа объектов, даже если объект содержит большие вложенные структуры?
При передаче экземпляра в место, где ожидается функция, какой механизм Python определяет его вызываемость?
Может ли абстрактный базовый класс считать тип совместимым при проверке экземпляра, если тип не наследуется от него, но имеет нужные методы?
Внутри переопределённого setattr каким способом сохранить атрибут, не вызвав рекурсивно тот же метод?
Предскажите вывод программы и назовите протокол, который определяет поведение f"{x}".
class Item:
def __str__(self):
return "STR"
def __repr__(self):
return "REPR"
x = Item()
print(f"{x}")
print(f"{x!r}")
print(format(x, ""))
При попытке изменить экземпляру значение class от чего зависит, разрешит ли Python такую замену?
При сериализации объекта через 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: почему его экземпляры перестают быть допустимыми ключами словаря?
Показано 261–280 из 348