Конструктор вызовов Python Pickle
Я хотел бы предоставить значения по умолчанию для пропущенных значений, используя сериализатор рассылки Python. Так как классы просты, значения по умолчанию естественно присутствуют в классах __init__
методы.
Я могу видеть из документации маринада, что есть __getnewargs__
, Однако это работает только в тех случаях, когда __getnewargs__
присутствовал до "травления".
Есть ли способ сказать Python pickle всегда вызывать конструктор, а не начинать с неинициализированного объекта?
1 ответ
Открепление всегда создает экземпляр без вызова __init__()
, Это по замыслу. В питоне 2 можно было переопределить __getinitargs__()
вызвать маринование позвонить __init__()
с некоторыми аргументами, но необходимо было переопределить этот метод во время травления. Это больше не доступно в Python 3.
Чтобы добиться того, чего вы хотите, не будет ли достаточно просто вручную вызвать self.__init__()
от self.__setstate__(state)
? Вы можете предоставить любые аргументы по умолчанию, не найденные в state
,