繁体   English   中英

将kwargs传递给动态实例化的Python类

[英]Pass kwargs to dynamically instantiated Python Class

也许(通常是)一种更好的方法来做我正在尝试的事情,但是我目前正在列出这样的对象列表:

my_list = [MyObject(d**) for d in db.myobjects.find({...})]

这很有用,因为它创建了将我的数据库查询返回的字典对象转换为“ MyObjects”,并添加了一堆类方法和属性。

在运行时动态插入类名称时,我该怎么做? 我可以使用eval()动态创建类,但是如何插入字典对象?

my_list = [eval('FooObject') for d in db.fooobjects.find({...})]  # needs kwargs from dicts

任何帮助都是极好的。

首先,考虑使用globals()而不是eval() ,特别是如果类字符串来自用户输入。

对于您实际的问题,它的工作方式完全相同eval('FooClass')globals()['FooClass']给您类本身 ,但没有实例化它。 这意味着您可以通过调用它来实例化它,就像您提前知道它的名字一样:

globals()['FooClass'](**d)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM