2009-04-14 37 views
0

通過創建從Expando類繼承的數據存儲模型,我可以 使我的模型實體/實例具有動態屬性。那就是 太棒了!但我想要的是這些動態屬性的名稱在運行時確定爲 。那可能嗎?將用戶提供的屬性(在運行時)添加到Google應用程序引擎中的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!!' 

這可能嗎?如果是的話,該怎麼做? 我已經嘗試了一些有趣的方式來做到這一點,但沒有成功:P

在此先感謝。

回答

0

剛剛找到解決我自己的問題。這非常簡單,但由於我是一個python noob,我最終發佈了上面看到的問題。

對於我曾使用的代碼示例,這是需要做什麼:

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

S.洛特的回答是正確的;你不應該直接調用__setattr__。 – 2011-11-28 00:53:08

3

通常情況下,我們直接使用SETATTR功能。

setattr(entity_two, 'some_variable', some_value) 
相關問題