在Google App Engine中向Expando类实例动态添加用户自定义属性?

0 投票
2 回答
753 浏览
提问于 2025-04-15 11:07

通过创建从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 个回答

3

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

setattr( entity_two, 'some_variable', some_value )
0

我刚刚找到了自己问题的解决办法。其实很简单,但因为我还是个Python新手,所以最后还是发了上面那个问题。

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

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

撰写回答