可能重复:
Does python have an equivalent to Java Class.forName()?
我正在使用appengine来开发一个应用程序。理想情况下,我想定义一种新类型(称为Recipe),如下所示:
class Recipe(db.Model):
ingredients = db.ListProperty(type)
quantities = db.ListProperty(int)
但是,似乎您不能使用“type”作为ListProperty中的类值。我想的是使用ListStringProperty而不是使用ListProperty,并将类名保存为字符串。但是,如何将字符串转换为类名,因此我可以这样写:
str = "A"
# convert str to class name in var class_str
class_str().call_some_method()
提前致谢,
何
答案 0 :(得分:1)
我建议你让ingredient
列出一个字符串列表,用你要保存的类型的pickle.dumps
填充它,并在检索时使用pickle.loads
来获取一个类型对象回来。
pickle
按名称序列化类型,因此存在一些约束(实质上,类型必须存在于某个模块的顶层),但这比进行自己的序列化更容易(尤其是类型名称的 de serializaton),这实际上需要您重复pickle
已经代表您完成的一些工作! - )
答案 1 :(得分:0)
也许你可以像这样使用eval?
class Juice(object):
def amount(self):
print "glass of juice"
juice = "Juice"
eval(juice)().amount()
# prints "glass of juice"