我需要使用 Python 2.7 将字典转换为类型化对象。
例如,如果我有这个字典:
mapy = {'id': 1, 'name': 'bob'}
我需要一些方法在运行时根据之前的映射和类型名称(在本例中为 'Person')生成此类:
class Person:
def __init__(self):
self.id = id
self.name = name
我应该考虑使用元编程技术吗?如果是的话,究竟是哪一种(装饰器、元类……)?
请注意,我不仅需要将字典转换为对象;我还需要将一些类型信息附加到生成的对象。
请您参考如下方法:
你可以尝试namedtuple:
from collections import namedtuple
mapy = { 'id' : 1, 'name' : 'bob'}
# Note that the order of `mapy.keys()` is unpredictable.
Person = namedtuple('Person', mapy.keys())
p = Person(**mapy)
p.id
p.name
