当需要的模型类型表示为字符串参数时,实例化模型

时间:2010-04-21 09:42:29

标签: google-app-engine

我的输入数据是一个字符串,表示我想要制作的数据存储模型的类型。 在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>

1 个答案:

答案 0 :(得分:0)

尼克约翰逊回答了我的另一个问题,也回答了这个问题。其中关键部分如下。基本上需要一个工厂模型或函数或字典,这是Python的一个关键优势,大多数人都知道但是像我这样的人忘了....

他写道:

  

相反,你应该定义一个   工厂方法,如:

class MyModel(db.PolyModel):
  @classmethod
  def create(cls, foo, bar):
    # Do some stuff
    return cls(foo, bleh)