使用class作为字符串

时间:2014-02-21 10:43:53

标签: python python-2.7

我在这个字符串中有这个类的名字:

className = "MyClassName"

我已经在我的模型中导入了MyClassName

有没有办法使用它:

Object = MyClassName()

我的想法

制作if else语句:

if className == "MyClassName":
    Object = MyClassName()
elif className == "MyClass2":
    Object = MyClass2()

我希望有更好的方法

2 个答案:

答案 0 :(得分:3)

您使用sys.modules[__name__]获取当前模块,然后使用getattr获取课程,就像这样

var = "MyClassName"
import sys
mod = sys.modules[__name__]
getattr(mod, var)()

@lanzz suggested in the comments

globals()[var]()

@Ashwini Chaudhary in the chat room的建议,

classes = {"MyClassName": MyClassName, "MyClass2": MyClass2}

然后,您可以使用classes字典来获取相应的类。我更喜欢这种方式,特别是如果输入来自用户。

答案 1 :(得分:0)

您可以使用eval功能。

var = "MyClassName"
ob = eval(var + "()")