首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何动态地向类添加属性?

如何动态地向类添加属性?

提问于 2018-03-22 23:49:10
回答 2关注 0查看 139

目标是创建一个模拟类,它的行为类似于db结果集。

例如,如果数据库查询使用dict表达式返回,{'ab':100, 'cd':200},然后我想看到:

>>> dummy.ab
100

一开始我想也许我可以这样做:

ks = ['ab', 'cd']
vs = [12, 34]
class C(dict):
    def __init__(self, ks, vs):
        for i, k in enumerate(ks):
            self[k] = vs[i]
            setattr(self, k, property(lambda x: vs[i], self.fn_readyonly))

    def fn_readonly(self, v)
        raise "It is ready only"

if __name__ == "__main__":
    c = C(ks, vs)
    print c.ab

c.ab返回属性对象。

替换setattr与...一致k = property(lambda x: vs[i])根本没用。在运行时创建实例属性的正确方法是什么?

相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档