为什么我不能腌制一个typing.NamedTuple
,而我可以腌制一个collections.namedtuple
?我怎样才能做pickle aNamedTuple
?在
这段代码显示了我目前所做的努力:
from collections import namedtuple
from typing import NamedTuple
PersonTyping = NamedTuple('PersonTyping', [('firstname',str),('lastname',str)])
PersonCollections = namedtuple('PersonCollections', ['firstname','lastname'])
pt = PersonTyping("John","Smith")
pc = PersonCollections("John","Smith")
import pickle
import traceback
try:
with open('personTyping.pkl', 'wb') as f:
pickle.dump(pt, f)
except:
traceback.print_exc()
try:
with open('personCollections.pkl', 'wb') as f:
pickle.dump(pc, f)
except:
traceback.print_exc()
外壳上的输出:
^{pr2}$
这是个虫子。我在上面开了一张票:http://bugs.python.org/issue25665
问题是在创建类时,^{} 函数通过从调用帧的全局参数中查找
__name__
属性来设置其__module__
属性。在本例中,调用者是typing.NamedTuple
。在因此,在本例中,它最终设置为
^{pr2}$'typing'
。在修复:
与其这样,^{} 函数应该自己设置它:
现在您还可以:
相关问题 更多 >
编程相关推荐