3

如果我有一個派生自db.Expando的實體,我可以通過給一個新屬性賦值來編寫Dynamic屬性,例如, 「Y」在這個例子:AppEngine:我可以使用在運行時選擇的名稱來編寫動態屬性(db.Expando)嗎?

class MyEntity(db.Expando): 
    x = db.IntegerProperty() 

my_entity = MyEntity(x=1) 
my_entity.y = 2 

但是假設我有一個變量的動態屬性的名稱...我怎麼能(1)讀,寫微博,和(2)如果動態檢查變量是否存在於實體的實例中?例如

class MyEntity(db.Expando): 
    x = db.IntegerProperty() 

my_entity = MyEntity(x=1) 
# choose a var name: 
var_name = "z" 
# assign a value to the Dynamic variable whose name is in var_name: 
my_entity.property_by_name[var_name] = 2 
# also, check if such a property esists 
if my_entity.property_exists(var_name): 
    # read the value of the Dynamic property whose name is in var_name 
    print my_entity.property_by_name[var_name] 

謝謝...

回答

6

是的,可以。您只需設置屬性的實體:

some_name = 'wee' 
setattr(my_entity, some_name, 'value') 
print getattr(my_entity, some_name) 
my_entity.put() 

setattrgetattrbuilt-in functions of Python用於設置/獲取與對象上的任意名稱的屬性。

+1

完美,謝謝!我還看到我可以使用hasattr來查明一個實體是否有動態變量。 – MarcoB 2010-06-16 13:04:18

相關問題