Python pickle.load 不执行我的 Class __new__ 方法

Python pickle.load does not execute my Class __new__ method

我开发了一个Class,需要在它的__new__方法中管理内存。 当我实例化一个对象时它工作得很好。 但是 __new__ 在使用 pickle.load

时不执行
   >>>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

方法不正确

换成下面的,解决我的问题。

def __new__(cls, *args, **kwds):
    print('Foo:__new__')
    print('args: [{}]'.format(args))
    print('kwds: [{}]'.format(kwds))
    return object.__new__(cls)