这是我要完成的工作的简化:
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,所以它无法访问该方法?我不太明白它是如何工作的。