2017-01-12 11 views
0

Python의 pickle serialiser를 사용하여 누락 된 값에 대한 기본값을 제공하고 싶습니다. 클래스는 단순하기 때문에 클래스의 __init__ 메소드에는 기본적으로 기본값이 있습니다.Python Pickle 호출 생성자

pickle documentation에서 볼 수있는 것은 __getnewargs__입니다. 그러나 이는 "절임"이전에 __getnewargs__이 있었던 경우에만 작동합니다.

파이썬 피클이 초기화되지 않은 개체로 시작하는 대신 생성자를 항상 호출하도록하는 방법이 있습니까?

답변

1

번들리기는 항상 __init__()을 호출하지 않고 인스턴스를 만듭니다. 이는 의도적으로 설계된 동작입니다. 파이썬 2에서는 __getinitargs__()을 무시하고 unpickling이 어떤 인수를 사용하여 __init__()을 호출 할 수 있었지만이 메서드를 산세 시간에 재정의해야했습니다. 이것은 파이썬 3에서는 더 이상 사용할 수 없습니다.

원하는 것을 얻으려면 self.__init__()self.__setstate__(state)에서 수동으로 호출하는 것만으로 충분하지 않습니까? state에없는 기본 인수를 제공 할 수 있습니다.