Мне не известен способ создания новых экземпляров классических классов (что вы и использовали в своем примере) без вызова __init__()
. Новые экземпляры классов нового стиля (потомки object
) могут быть созданы с помощью
object.__new__(cls)
где cls
- это тип объекта, который вы хотите создать.
В качестве альтернативы можно использовать copy.copy()
для копирования, возможно перезаписывая __getstate__()
и __setstate__()
, чтобы определить, что должно быть скопировано.
Редактировать : Чтобы создать новый экземпляр классического класса cls
без вызова __init__()
, вы можете использовать следующий хак:
class EmptyClass:
pass
new_instance = EmptyClass()
new_instance.__class__ = cls
new_instance.__dict__.update(whatever)