ndb.StructuredProperty не вызывает методы подкласса ndb.PolyModel

При хранении суперклассов ndb.Polymodel как ndb.StructuredProperty я не смог получить доступ к методам подкласса; методы суперкласса были вызваны вместо этого и вызывают NotImplementedError 's. Вот сокращенная версия того, что я пытаюсь достичь.

class Recipient(polymodel.PolyModel):
  name = ndb.StringProperty()

  def PrettyPrinting(self):
    raise NotImplementedError, 'Rawr'


class ShippingRecipient(Recipient):
  address_line_one = ndb.StringProperty()
  #there are other properties, but they aren't necessary here.

  def PrettyPrinting(self):
    return 'Hey, this should be called.'


class LocalRecipient(Recipient):
  distribution_location = ndb.StringProperty()
  #same deal, more attributes, but useless for this example.

  def PrettyPrinting(self):
    return 'Hey this should be called.'

class Shipment(ndb.Model):
  recipient = ndb.StructuredProperty(Recipient)

Теперь скажите, что я сохранил посылку и сохранил получателя ShippingPecipient 'поле получателя. В хранилище данных получатель отправления.класс == ['Получатель ','ShippingRecipient»]. Когда я звоню:

shipment = Shipment.get_by_id('some_key')
shipment.recipient.PrettyPrinting()

NotImplementedError вызывается вместо реализации ShippingRecipient PrettyPrinting (...). Я хочу, чтобы метод подкласса вызывался при доступе к отправкеполе получателя. Есть ли способ получить метод подкласса вместо этого? Я знаю, что говоря, что структурированное свойство имеет тип Recipient, вызывает метод суперкласса, но тогда, возможно, я неЯ полностью не понимаю, почему они будут хранить подкласс в атрибуте receient.class.

Ответы на вопрос(1)

Ваш ответ на вопрос