2013-04-02 6 views
0

ОК, я застрял. У меня есть простой объект StructuredProperty (всего один уровень) на объекте. И во время выполнения я хочу получить значение одного из «под-свойств» на этом StructuredProperty по имени. Например;App Engine ndb StructuredProperty __get__

class Address(ndb.Model): 
    street = ndb.StringProperty() 
    # ... 

class Person(ndb.Model): 
    # ... 
    address = ndb.StructuredProperty(Address) 

, а затем во время выполнения, я хочу, чтобы иметь возможность сделать что-то вроде:

prop = entity._properties['address'] 
sub_prop = prop.__getattr__('street') 
value = sub_prop.__get__(entity, Person) 

или получить у него с помощью GenericProperty или что-то работает лучше. Но я попробовал несколько вариантов, и я явно что-то пропустил. Разумеется, причина, по которой я хочу это сделать, - это на самом деле несколько названий Address-like StructuredProperty, и я знаю, какой из них я хочу, основываясь на контексте выполнения.

Спасибо за любую помощь.

+0

Что случилось с 'GetAttr (пропеллер, 'некоторое_имя')'? У меня проблемы с этим. – bossylobster

+0

Ты был прав Бобби. Я смотрел на него назад. Пришлось отойти от компьютера и вернуться. – Jay

ответ

0

Бобби был прав. Я получал собственность, а не стоимость имущества, как я думал (длинный день).

Простой ответ

getattr(prop, 'some_name') 
+0

* Bossy Lobster, а не Бобби – bossylobster

Смежные вопросы