'__getnewargs__'在这段代码中做了什么

时间:2009-12-30 03:29:07

标签: python

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),)

1 个答案:

答案 0 :(得分:10)

试试这个:

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

即:__getnewargs__告诉pickle.dumps挑选x,以便从该字符串返回的pickle.loadsNavigableString.__new__与正确的参数一起使用。