eval(X, type("_Dummy", (dict,), {'__getitem__': lambda name, value: name}))
这段代码最重要的一个应用是可以格式化非标准的JSON数据,比如
X = { key: "value" }
eval(X, type("", (dict,), {'__getitem__': lambda s, n: n})())
这样可以转化成标准字典
那么这一句神奇的东西该怎么解释呢?
首先type在这里充当的不是返回类型的作用,这里作为一个class constructor的存在,第一个参数是类名,第二个参数为类的基类,第三个参数为一个字典,表示这个类的成员和方法。
那么,eval(X, type("", (dict,), {'getitem': lambda s, n: n})())就是创建了一个临时的_Dummy类,上面的语句规约为
eval(X, _Dummy)
那么eval的第二个的参数什么意思呢?
>>> help …


