1

这是我要完成的工作的简化:

B类继承自A。

B 类应该覆盖 A 类中的 call_me 方法。

我正在使用谷歌应用引擎(也许这就是为什么?)

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'])。但是,我不想调用 A 类的 call_me 。

当我打电话时B().__class__.__name__,我得到'A'

解决这个问题的正确方法是什么?

没关系。看起来这段代码有效。我使用的是投影 qry,所以它无法访问该方法?我不太明白它是如何工作的。

4

1 回答 1

1

Never mind. It looks like this code works. I was using a projection qry so I'm assuming I didn't have access to the method? I don't quite understand how that works. I'll figure it out later.

于 2018-02-14T02:28:26.650 回答