[英]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.