Google app engine 当所需的模型类型表示为字符串参数时,实例化模型
我的输入数据是一个字符串,表示我想要创建的数据存储模型的类型。 在python中,我使用Google app engine 当所需的模型类型表示为字符串参数时,实例化模型,google-app-engine,Google App Engine,我的输入数据是一个字符串,表示我想要创建的数据存储模型的类型。 在python中,我使用eval()函数来实例化模型(在代码下面),但这似乎过于复杂,所以我想知道是否有一种更简单的方法可以让人们通常这样做 >>>model_kind="TextPixels" >>>key_name_eval="key_name" >>>key_name="key_name" >>>kwargs {'lat': [0, 1, 2, 3], '
eval()
函数来实例化模型(在代码下面),但这似乎过于复杂,所以我想知道是否有一种更简单的方法可以让人们通常这样做
>>>model_kind="TextPixels"
>>>key_name_eval="key_name"
>>>key_name="key_name"
>>>kwargs
{'lat': [0, 1, 2, 3], 'stringText': 'boris,ted', 'lon': [0, 1, 2, 8], 'zooms': [0, 10]}
>>>obj=eval( model_type + '(key_name='+tester+ ',**kwargs )' )
>>>obj
<datamodel.TextPixels object at 0xed8808c>
>>model\u kind=“TextPixels”
>>>key\u name\u eval=“key\u name”
>>>key\u name=“key\u name”
>>>夸尔斯
{'lat':[0,1,2,3],'stringText':'boris,ted','lon':[0,1,2,8],'zooms':[0,10]}
>>>obj=eval(型号为+'(按键名称='+测试仪+',**kwargs))
>>>obj
尼克·约翰逊回答了我的另一个问题,也回答了这个问题。其关键部分如下。基本上需要一个工厂模型、函数或字典,这是Python的一个关键优势,大多数人都知道,但像我这样的人却忘记了
他写道:
相反,您可能应该定义
工厂方法,如下所示:
上面的代码令人困惑。这段代码是相同的想法,但更容易理解:>>>eval_key_name=“key_name”>>>>key_name=“BORIS”>>>obj=eval(model_type+'(key_name='+eval_key_name+',**kwargs))
class MyModel(db.PolyModel):
@classmethod
def create(cls, foo, bar):
# Do some stuff
return cls(foo, bleh)