很多时候,我发现自己想要一个简单的 Python 中的“转储”对象,它的行为类似于 JavaScript 对象(即,可以使用 .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 (most recent call last): File "", line 1, in AttributeError: 'object' object has no attribute 'airspeed'
编辑:(该死,早该看到这个)……别担心!我不是想用 Python 编写 JavaScript。我最常发现我想要这个的地方是在我还在试验的时候:我有一系列“东西”,放在字典里感觉不太合适,但拥有自己的类也不合适.
最佳答案
在 Python 3.3+ 中,您可以使用 SimpleNamespace,它完全符合您的要求:
from types import SimpleNamespace
obj = SimpleNamespace()
obj.airspeed = 42
https://docs.python.org/3.4/library/types.html#types.SimpleNamespace
关于python - Python标准库中的类JavaScript对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2640806/