我想定義一個能夠從另一個實例的序列化數據中讀取數據的類。下面是簡化代碼:如何使用pickle()初始化一個實例?
class MyClass(list):
def __init__(self,**kwargs):
if kwargs.has_key('fdata'):
f = open(kwargs['fdata'],'r')
self = pickle.load(f)
print len(self) #prints 320
f.close()
...
a = MyClass(fdata='data.dat')
print len(a) #prints 0
這是輸出我得到:
320
0
我的問題是,返回的實例總是空的,即使我能夠讀取裏面的所有元素__init__()
什麼可能導致這種情況?
指定'__dict__'來複制對象狀態,這是在你從(object)派生的(普通)情況下工作的,並且不要定義__slots__。 –
'self .__ dict __。update()'可能是一個「更安全」的選項,但是你可能會留下一些從醃製數據中刪除的東西,這是有原因的。 –