Google App Engine: как программно получить доступ к свойствам моего класса Model?
У меня есть модельный класс:
class Person(db.Model):
first_name = db.StringProperty(required=True)
last_name = db.StringProperty(required=True)
У меня есть экземпляр этого класса в p
и строка s
содержит значение 'first_name'
, Я хотел бы сделать что-то вроде:
print p[s]
а также
p[s] = new_value
Оба из которых приводят к TypeError
,
Кто-нибудь знает, как я могу добиться того, чего хотел бы?
5 ответов
Если класс модели достаточно интеллектуален, он должен распознавать стандартные способы Python сделать это.
Пытаться:
getattr(p, s)
setattr(p, s, new_value)
Также есть hasattr.
Большое спасибо Джиму, точное решение, которое я искал:
p.properties()[s].get_value_for_datastore(p)
Всем остальным респондентам спасибо за вашу помощь. Я также ожидал, что класс Model реализует стандартный способ Python, но по какой-то причине этого не происходит.
2008-09-18 12:06
p.first_name = "Новое имя" p.put()
или p = Person(first_name = "Firsty", last_name = "Lasty") p.put()