【发布时间】:2010-04-14 20:29:35
【问题描述】:
很多时候,我发现自己想要一个简单的 Python 中的“转储”对象,它的行为类似于 JavaScript 对象(即,可以使用 .member 或 ['member'] 访问其成员)。
通常我会把它贴在.py的顶部:
class DumbObject(dict):
def __getattr__(self, attr):
return self[attr]
def __stattr__(self, attr, value):
self[attr] = value
但这有点蹩脚,而且该实现至少存在一个错误(虽然我不记得它是什么)。
那么,标准库中是否有类似的东西?
并且,为了记录,简单地实例化 object 是行不通的:
编辑:(该死,早该看到这个)……别担心!我不是想用 Python 编写 JavaScript。我最常发现我想要这个的地方是在我还在试验的时候:我收集了一些“东西”,放在字典里不太合适,但拥有自己的类也不合适.
【问题讨论】:
-
正如我在下面所说的,您正在尝试围绕从另一种语言带来的错误直觉进行编码。在 Python 中,即使在“实验”时,我们也会编写类。试试——停止写 DumbObject,实际写“class Foo”,看看它不咬人。
-
而且,正如我在下面所说的......这是一个有趣的想法 - 简单地使用,例如,类 Foo: airspeed = 42 - 我没有考虑过。但是,它确实有一个问题,即它的行为不像字典(是的,有 dict...),这使得实验更加困难。
-
看起来我们都想用 Python 做一些事情 :) stackoverflow.com/questions/2466191/…
-
我在此表示怀疑,但您是否考虑过使用像 Redis 这样的键/值存储?正如您所说,它擅长作为“东西”的集合。 Python 客户端非常容易使用。
标签: python