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)
我开发了一个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)