Google App Engine 폴리 모델을 사용하여 둘 이상의 속성 인스턴스를 가질 수있는 데이터를 모델링하고 있습니다. 연락처에 여러 개의 전화 번호가있을 수 있습니다. 말이 내 설정입니다 : 내가 할 때 이제@property를 통해 정의 된 것을 포함하여 GAE 폴리 모델의 모든 클래스 속성 (파이썬에서)을 얻는 방법
:
class Foo(polymodel.PolyModel):
some_prop = ndb.StringProperty()
@property
def bar(self):
return Bar.query(Bar.foo == self.key)
class Bar(ndb.Model):
foo = ndb.KeyProperty(kind = Foo)
other_prop= ndb.StringProperty()
이 (
https://developers.google.com/appengine/articles/modeling 나는 데이터 모델링에이 GAE 문서를 읽은 후이 방법을 가지고) :
Foo._properties
난 단지에 접근 할 수 다음과 같습니다 :
{'some_prop': StringProperty('some_prop'),
'class': _ClassKeyProperty('class', repeated=True)}
정의 된 것을 포함하여 모든 속성에 액세스 할 수있는 방법이 있습니까? ith "@property"?
내가 도움이되지 않을 경우 도움이나 통찰력을 주셔서 감사합니다. - 리
UPDATE :
def props(self):
return dict(self._properties.items() + \
{attr_name:getattr(self,attr_name) for \
attr_name, attr_value in \
Foo.__dict__.iteritems() if \
isinstance(attr_value,property)}.items())
FastTurtle : 와우,이 수준 높은 응답을 너무 빨리 예상하지 못했습니다. 정말 고마워요! 내 코드는 이제 더 멋지게 보입니다 + 나는 데코레이터에 대해 더 많이 알게되었습니다. 내 대답을 편집하여 속성 메서드와 속성 메서드를 모두 반환하기 위해 추가 한 클래스 메서드를 보여줍니다. 다행히도 그것은 의미가 있습니다. 많은 도움을 주셔서 대단히 감사합니다! :) – pixelphantom
@pixelphantom 내 대답이 도움이되었다는 소식을 듣고 기쁘다! 당신이 추가 한 방법은 좋아 보이고 당신이 원하는대로 잘하면됩니다. 행운을 빕니다 :) – FastTurtle