所以我有一组类和一个包含其中一个类名的字符串。如何根据该字符串实例化一个类?
class foo:
def __init__(self, left, right):
self.left = left
self.right = right
str = "foo"
x = Init(str, A, B)
我想让x成为类foo的实例化。
发布于 2010-02-09 10:34:38
如果您知道所涉及的名称空间,则可以直接使用它--例如,如果所有类都在模块zap
中,则字典vars(zap)
就是该名称空间;如果它们都在当前模块中,则globals()
可能是获取该字典的最方便的方法。
如果这些类并不都在同一个名称空间中,那么构建一个“人工的”名称空间(一个专用的dict,类名作为键,类对象作为值),就像@Ignacio建议的那样,可能是最简单的方法。
发布于 2011-05-11 14:13:53
在您的示例中,您可以使用以下内容
get_class = lambda x: globals()[x]
c = get_class("foo")
更简单的是,没有从模块获取类
import somemodule
getattr(somemodule, "SomeClass")
发布于 2010-02-09 10:22:57
classdict = {'foo': foo}
x = classdict['foo'](A, B)
https://stackoverflow.com/questions/2226330
复制相似问题