Полимодель движка приложения google - переопределяющий метод экземпляра - ошибка - python

Вот упрощение того, что я пытаюсь сделать:

класс B наследуется от A.

Класс B должен переопределить метод call_me в классе A.

Я использую Google App Engine (может быть, поэтому?)

from google.appengine.ext import ndb
from google.appengine.ext.ndb import polymodel

class A(polymodel.PolyModel):
    def call_me(self):
        print "super class called"
        return
    @classmethod
    def get_call_me(cls, qry)
        return [m.call_me() for m in qry]

class B(A):
    def call_me(self):
        print "sub class method called"
        return

Когда я звоню

object_b = B()
all_A = A.query() # get's object_b as well because object_b is an A
A.get_call_me(all_A)

Я получаю "супер класс называется" в терминале.

Как сделать так, чтобы вместо / также запускался "метод подкласса"?

класс B является A по наследству (в хранилище данных он отображается как ['A', 'B']). Но я не хочу, чтобы call_me из класса A вызывался.

когда я звоню B().__class__.__name__ Я получаю 'A'

Как правильно это сделать?

Не берите в голову. Похоже, этот код работает. Я использовал проекцию qry, чтобы у него не было доступа к методу? Я не совсем понимаю, как это работает.

1 ответ

Не берите в голову. Похоже, этот код работает. Я использовал проекцию qry, поэтому я предполагаю, что у меня не было доступа к методу? Я не совсем понимаю, как это работает. Я разберусь позже.

Другие вопросы по тегам