2009-12-30 28 views
7
class NavigableString(unicode, PageElement): 

    def __new__(cls, value): 
     if isinstance(value, unicode): 
      return unicode.__new__(cls, value) 
     return unicode.__new__(cls, value, DEFAULT_OUTPUT_ENCODING) 

    def __getnewargs__(self):#this line 
     return (NavigableString.__str__(self),) 

Trả lời

10

Hãy thử điều này:

x = NavigableString('foop') 
y = pickle.dumps(x) 
z = pickle.loads(y) 
print x, z 

Ie: __getnewargs__ nói pickle.dumps để dưa x theo cách như vậy mà một pickle.loads trở lại từ chuỗi mà sẽ sử dụng NavigableString.__new__ với đúng tranh luận.