【发布时间】:2016-02-21 03:48:27
【问题描述】:
为什么我不能腌制typing.NamedTuple 而我可以腌制collections.namedtuple?我怎样才能做泡菜NamedTuple?
这段代码显示了我到目前为止所做的尝试:
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()
shell 上的输出:
$ python3 prova.py
Traceback (most recent call last):
File "prova.py", line 16, in <module>
pickle.dump(pt, f)
_pickle.PicklingError: Can't pickle <class 'typing.PersonTyping'>: attribute lookup PersonTyping on typing failed
$
【问题讨论】:
-
此问题已在
python 3.5.1中修复。
标签: python pickle namedtuple python-3.5