我开发了一个需要在__new__
方法中管理内存的类。
当我实例化一个对象时它很好用。
但是在使用pickle.load时不会执行__new__
>>>import pickle
>>>class Foo(object):
... def __new__(cls, *args, **kwds):
... print('Foo:__new__')
... print('args: [{}]'.format(args))
... print('kwds: [{}]'.format(kwds))
... return cls
>>>foo = Foo()
Foo:__new__
args: [()]
kwds: [{}]
>>>fp=open('test.bin', 'wb')
>>>pickle.dump(foo,fp)
>>>fp.close()
>>>fp=open('test.bin', 'rb')
>>>foo = pickle.load(fp)
!我的问题在于:方法Foo :: new 未执行
>>>foo
__main__.Foo
答案 0 :(得分:0)
新方法不正确。
替换为以下内容,解决我的问题。
def __new__(cls, *args, **kwds):
print('Foo:__new__')
print('args: [{}]'.format(args))
print('kwds: [{}]'.format(kwds))
return object.__new__(cls)