python - 如何将 Python dict 转换为特定类型的对象?

标签 python dictionary metaprogramming

我需要使用 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

关于python - 如何将 Python dict 转换为特定类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24290832/

相关文章:

python - 以编程方式将列表的内容写入目录

python - 如何使用 'serial.tools.list_ports' python 模块获取可用串口列表?

python - 合并字典而不覆盖,如果键相等则增加值

c++ - 模板扣减申诉模棱两可的候选人

python - 抓取页面时找不到视频网址

python - 检查一个字符串是否包含一组字符串中的任何项目?

python - 将 Python OrderedDict 写入 CSV

c++ - map<int, int>::iterator 的编译错误,与 operator = 不匹配

ruby 元 : Class. superclass.class == 类

c# - 如何在编译时驱动 C#、C++ 或 Java 编译器计算 1+2+3+...+1000?