2010-01-23 55 views
2

可能重复:
Does python have an equivalent to Java Class.forName()?将字符串转换(从AppEngine上的数据存储类)

我使用AppEngine上开发应用程序。理想我想定义一种新的(称为配方)是这样的:

class Recipe(db.Model): 
    ingredients = db.ListProperty(type) 
    quantities = db.ListProperty(int) 

但是似乎你不能使用“类型”中的ListProperty类值。我想的不是使用ListProperty,而是使用ListStringProperty并将类名称保存为字符串。然而,如何将字符串转换为一个类名,这样我就可以这样写:提前

str = "A" 
# convert str to class name in var class_str 
class_str().call_some_method() 

感谢,
何塞

+0

也许这个问题的答案会帮助你:[python是否具有与Java的Class.forName()?](http://stackoverflow.com/questions/452969/) – gclj5 2010-01-23 08:24:44

回答

0

也许你可以使用eval,这样的吗?

class Juice(object): 
    def amount(self): 
     print "glass of juice" 

juice = "Juice" 
eval(juice)().amount() 
# prints "glass of juice" 
1

我建议你ingredient字符串列表,与你保存类型pickle.dumps填充它,并经检索,使用pickle.loads得到一个类型的对象了。

pickle序列化类型“按名称”,所以有一些限制(基本上,该类型必须住在某些模块的顶级),但是这不是做自己的序列化(和,尤其是方式更简便, serializaton)的类型名称,这基本上会导致你重复一下pickle已经可以代表你的工作!)

相关问题