这是我想要完成的事情的简化:
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)
我得到"超级班叫做#34;在终端。
如何确保"子类方法调用"反而被解雇了?
B类是继承的A(在数据存储区中显示为[' A',' B'])。但是,我不希望调用来自A类的call_me。
当我致电B().__class__.__name__
时,我得到了'
正确的方法是什么?
没关系。看起来这段代码有效。我正在使用投影qry,所以它无法访问该方法?我不太明白这是如何运作的。
答案 0 :(得分:1)
没关系。看起来这段代码有效。我正在使用投影qry所以我假设我没有访问该方法?我不太明白这是怎么回事。我稍后会弄清楚的。