Добавить пользовательское свойство (во время выполнения) в экземпляр класса Expando в Google App Engine? - PullRequest
0 голосов
/ 14 апреля 2009

Создавая модели хранилищ данных, которые наследуются от класса 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 голосов
/ 14 апреля 2009

Обычно мы используем функцию setattr напрямую.

setattr( entity_two, 'some_variable', some_value )
0 голосов
/ 14 апреля 2009

Только что нашел решение моего собственного вопроса. Это было действительно просто, но, поскольку я noob-питон, я закончил тем, что опубликовал вопрос, который вы видите выше.

Для примера кода, который я использовал, вот что нужно сделать:

entity_two.__setattr(some_variable, some_value) #where some_variable is populated by user at runtime :)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...