__getnewargs__' 在这段代码中有什么作用

12 投票
1 回答
8406 浏览
提问于 2025-04-15 17:28
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 个回答

15

试试这个:

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

也就是说:__getnewargs__ 告诉 pickle.dumps 如何把 x 转换成一种格式,这样用 pickle.loads 从那个字符串再恢复回来时,会用到 NavigableString.__new__ 并传入正确的参数。

撰写回答