2009-12-30 23 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),) 

Respuesta

10

Prueba esto:

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

Es decir: __getnewargs__ dice pickle.dumps de estibar x de una manera tal que una pickle.loads de vuelta de esa cadena usará NavigableString.__new__ con el buen argumento.