Google app engine 当所需的模型类型表示为字符串参数时,实例化模型

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], '

我的输入数据是一个字符串,表示我想要创建的数据存储模型的类型。 在python中,我使用
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)