При вызове copy.copy для экземпляра пользовательского класса что изменится, если в классе определить __copy__?
База Hintsage
Модель данных
Протоколы объектов, dunder-методы, дескрипторы и классы.
Практика
Вопросы: Модель данных
Что произойдёт при создании экземпляра, если метод init явно вернёт значение, отличное от None?
Нужно передать объект пути в API, ожидающий путьоподобное значение. Какой метод будет вызван и что напечатает программа?
import os
class DataPath:
def __fspath__(self):
return "/srv/data"
path = DataPath()
print(os.fspath(path))
Какой специальный метод должен определить объект, чтобы bytes(obj) получил его собственное байтовое представление, а не использовал другие варианты протокола преобразования?
При создании подкласса с именованным параметром в заголовке, каким механизмом базовый класс получает этот параметр?
Если у класса нет __contains__, каким запасным протоколом Python проверяет вхождение через оператор in?
В графе объектов глубокая копия должна сохранить общие ссылки и не зациклиться: какой механизм протокола deepcopy отвечает за это?
Допустима ли инициализация класса с двумя базовыми классами, чьи метаклассы несовместимы?
Назовите точку перехвата вызова класса, которая выполняется до его new, и объясните, где она должна быть определена.
Объект реализует __await__, возвращая корутину: что произойдёт при await?
При вызове classmethod через подкласс какой класс получает его первым аргументом и почему?
Вызов reversed для объекта без __reversed__: какой запасной протокол определяет порядок обхода?
Кто перехватывает присваивание атрибута самому классу: его __setattr__ или __setattr__ метакласса?
Как наличие слота __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, ""))
Показано 1–20 из 50