将用户提供的属性(在运行时)添加到Google App Engine中的Expando类实例?

时间:2009-04-14 09:56:28

标签: python google-app-engine

通过创建继承自Expando类的数据存储模型,我可以 使我的模型实体/实例具有动态属性。那是 大!但我想要的是这些动态属性的名称 在运行时确定。这可能吗?

例如,

class ExpandoTest (db.Expando):
 prop1 = db.StringProperty()
 prop2 = db.StringProperty()

entity_one = ExpandoTest()
entity_two = ExpandoTest()

# what I do not want
entity_one.prop3 = 'Demo of dynamic property'

# what I want
entity_two.<property_name_as_entered_by_user_at_runtime> = 'This
property name was entered by the user, Great!!'

这可能吗?如果是这样,怎么样? 我已经尝试了几种方法来做到这一点,但没有成功。

提前致谢。

2 个答案:

答案 0 :(得分:3)

通常,我们直接使用setattr函数。

setattr( entity_two, 'some_variable', some_value )

答案 1 :(得分:0)

刚刚找到了我自己的问题的解决方案。这真的很简单,但因为我是一个python noob,我最后发布了你在上面看到的问题。

对于我使用的代码示例,这是需要做的事情:

entity_two.__setattr(some_variable, some_value) #where some_variable is populated by user at runtime :)