我正在尝试腌制namedtuple
:
from collections import namedtuple
import cPickle
class Foo:
Bar = namedtuple('Bar', ['x', 'y'])
def baz(self):
s = set()
s.add(Foo.Bar(x=2, y=3))
print cPickle.dumps(s)
if __name__ == '__main__':
f = Foo()
f.baz()
这将产生以下输出:
Traceback (most recent call last):
File "scratch.py", line 15, in <module>
f.baz()
File "scratch.py", line 11, in baz
print cPickle.dumps(s)
cPickle.PicklingError: Can't pickle <class '__main__.Bar'>: attribute lookup __main__.Bar failed
我究竟做错了什么?是,这个问题Bar
是一个成员Foo
?(将的定义Bar
移到最高级别可以解决此问题,尽管我仍然很好奇为什么会这样。)
是的,它是类成员这一事实是一个问题:
>>> class Foo():
... Bar = namedtuple('Bar', ['x','y'])
... def baz(self):
... b = Foo.Bar(x=2, y=3)
... print(type(b))
...
>>> a = Foo()
>>> a.baz()
<class '__main__.Bar'>
问题在于,当namedtuple()
返回类型对象时,它不知道将其分配给类成员的事实-
因此,它告诉类型对象其类型名称应为__main__.Bar
,即使它确实应该为__main__.Foo.Bar
。
问题内容: 令我发疯…… 我想升级许多软件包,对于每个软件包,我都必须检查是否有更大的版本。这是通过函数来完成的。 主要代码在方法中:在此处创建Pool对象并调用该方法。 这是代码: 当我运行它时,我得到这个奇怪的错误: 问题答案: 多重处理通过传递任务(包括和)到工作进程。与s不同,放入s中的所有内容都必须是可挑选的。s不可选: 产生此异常: 您的include包括一个Queue.Queue。这
您好,我正在建立一个动物园微服务,包括动物、员工、客户和价格表。我的动物微服务可以工作,但在我的员工微服务中,我遇到了一个错误,即没有为类型“EmployeeModel”找到属性“name”。在问这个问题之前,我已经在网上搜索了几个小时,还有一些类似的问题。我在模型中没有“名字”employee_name,我只是感到困惑,不知道如何修复它。任何指导/建议/信息将不胜感激:)第一次发布,所以我希望我
问题内容: 我需要一种检查类的方法,以便可以安全地标识哪些属性是用户定义的类属性。问题是,像DIR功能(),inspect.getmembers()和朋友返回所有类的属性包括预定义的像:,,,。这当然是可以理解的,并且可以说我可以列出一个要忽略的命名成员列表,但是不幸的是,这些预定义属性必定会随着不同版本的Python发生变化,因此使我的项目在python项目中容易发生变化- 我不喜欢那样。 例:
我有以下实体: 然后我创建我的存储库: 但我一开始就收到: 未找到MyTable类型的属性getCountOf 我到底做错了什么?
问题内容: 我已经根据numpy文档创建了numpy ndarray的子类。特别是,我通过修改提供的代码添加了自定义属性。 我正在使用Python在并行循环中处理此类的实例。据我了解,将范围本质上“复制”到多个线程的方法是使用。 我现在要面对的问题与numpy数组的腌制方式有关。我找不到关于此的任何综合文档,但是莳萝开发人员之间的一些讨论建议我应该专注于该方法,该方法在腌制时被调用。 谁能进一