作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些 pickle 格式的数据,其中包含以下对象的实例:
Point = namedtuple('Point', ['x',])
现在我想扩展 Point 对象以添加另一个变量“y”,但同时保持它与我已经 pickle 的数据兼容。
下面是我尝试过的,但似乎失败了。我还尝试通过在制作 Point 对象时将 y 参数设置为可选来制作 Point 类的代码,但效果不佳。关于如何进行的任何想法?
from collections import namedtuple
Point = namedtuple('Point', ['x'])
i = Point(1)
import cPickle
pick=cPickle.dumps(i)
Point = namedtuple('Point', ['x', 'y'])
cPickle.loads(pick)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 22, in __repr__
TypeError: not enough arguments for format string
最佳答案
元组是不可变的。首先 Unpickle,然后使用不同的 namedtuple 类创建一个新点并使用旧点的属性 x
。对 Point
类使用相同的名称应该会产生您想要的效果:
Point = namedtuple('Point', ['x'])
i = Point(1)
pick=cPickle.dumps(i)
def unpickle_point(dumped_obj):
Point = namedtuple('Point', ['x'])
point = cPickle.loads(pick)
Point = namedtuple('Point', ['x', 'y'])
return Point(point.x, 2)
new_point = unpickle_point(pick)
现在:
>>> new_point
Point(x=1, y=2)
关于python - 将额外的字段添加到现有的 namedtuple 对象并解封,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47999460/
我正在为库存系统编写 Python CGI 脚本。它需要通过 pickle 存储一个对象列表(称为 locations)。这是我正在使用的代码: try: with open(".config
已在 Azure Kubernetes 上安装 Vault,并使用 Azure Key Vault 配置自动解封。最初部署后,Vault 状态返回,密封类型为“azurekeyvault”,密封为 t
我是一名优秀的程序员,十分优秀!