python - Python标准库中的类JavaScript对象?

标签 python

很多时候,我发现自己想要一个简单的 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/

相关文章:

python - 将带有 2 层定界符的字符串转换为字典 - python

python - 在字段中添加 "UOM"(测量单位) - OpenErp

python - 导入 mod_python 时出错

python - 如何使用 Django Rest Framework 清除图像?

python - 在 OpenCV/Python 中设置相机参数

python - 比较从 float 和字符串创建的 Python Decimals

python - 使用 numpy(快速)计算平均栅格值

python - 使用 Python 在 Zebra 打印机上打印 XML

python - 在 Python 中打开 SSL 套接字连接

python - 如何使用函数更改全局变量