我想在Python中使用一个简单的“转储”对象,其行为类似于JavaScript对象(即,其成员可以使用.member或使用['member'])。
通常我会把它放在以下的顶部.py:
class DumbObject(dict):
def __getattr__(self, attr):
return self[attr]
def __stattr__(self, attr, value):
self[attr] = value
但这有点蹩脚,并且该实现至少存在一个错误(尽管我不记得它是什么)。
那么,标准库中有类似的东西吗?
并且,为了记录,简单的实例化object不起作用:
>>> obj = object()
>>> obj.airspeed = 42
Traceback(最近一次调用最后一次):
文件“”,第1行,in
AttributeError:'object'对象没有属性'airspeed'
编辑 :我不是想用Python编写JavaScript。我经常发现我想要的地方就是在我还在试验的时候:我有一些“东西”的集合,这些东西不太适合放入字典,但也不适合拥有自己的类。
发布于 2019-02-20 14:54:59
你可能感兴趣 :collections.namedtuple
发布于 2019-02-20 16:27:51
你可以试试attrdict:
class attrdict(dict):
def __init__(self, *args, **kwargs):
dict.__init__(self, *args, **kwargs)
self.__dict__ = self
a = attrdict(x=1, y=2)
print a.x, a.y
print a['x'], a['y']
b = attrdict()
b.x, b.y = 1, 2
print b.x, b.y
print b['x'], b['y']
https://stackoverflow.com/questions/-100008960
复制相似问题