2

次の例のどちらも機能しないのはなぜですか?

class Person(ndb.Model):
   first_name = ndb.StringProperty()
   last_name = ndb.StringProperty()
   city = ndb.StringProperty()
   birth_year = ndb.IntegerProperty()
   height = ndb.IntegerProperty()

  @classmethod
  def get_person(self, _last_name, _max_height):
     a_person = Person.query(
           ndb.AND(
              Person.last_name == _last_name,
              Person. height == _max_height
       ))
      return a_person

Person他の例では、次のように置き換えますself

@classmethod
  def get_person(self, _last_name, _max_height):
     a_person = self.query(
           ndb.AND(
              self.last_name == _last_name,
              self. height == _max_height
       ))
      return a_person

したがって、基本的にはandを使用してget_personメソッドを呼び出し、人を返すようにしたいと考えています(一致が 1 つしかないと仮定します)。どうすればそれを達成できますか?last_namemax_height

呼び出しクラス/オブジェクトには次の行があります。

my_person = Person.get_person('Doe',7)
if my_person.first_name is None:
   my_person.first_name = 'John'

しかし、コードmy_personは属性を持っていないと言って失敗しますfirst_name(または私が試した他の属性は何でも)。

4

1 に答える 1

3

次の作品:

@classmethod
def get_person(self, _last_name, _max_height):
 a_person = Person.query(
       ndb.AND(
          Person.last_name == _last_name,
          Person. height == _max_height
   ))
  return a_person.get()
于 2012-12-04T01:06:04.733 に答える