【发布时间】:2021-09-02 22:20:48
【问题描述】:
我知道与python中的类方法相关的问题已经回答了很多次,但是即使在实施了这些解决方案之后,我面临的问题仍然存在。
我遇到了许多确实帮助我理解基本逻辑的答案,但是由于这里的ndb.Model 实现,我发现很难查明问题。
我的代码结构,
class A(ndb.Model):
@classmethod
def fun(cls, input):
db_obj = cls.get_by_id(input) # get_by_id is ndb.Model function that brings record from db
return db_obj.required_data
class B(A):
@classmethod
def fun(cls, input):
required_data = super(B, cls).fun(input)
当我们到达cls.get_by_id(input) 时,即使存在所需的记录,也不会从数据库返回任何内容。当我不将派生类fun() 作为类方法并像A.fun() 一样直接调用它时,它就会起作用。但是,我认为这不是正确的实现方式。
对上述内容的任何帮助都会很棒。谢谢!
【问题讨论】:
-
请尝试创建minimal, reproducible example的问题。看看您是否可以在不涉及数据库的情况下演示该问题。看看你是否可以用你自己的祖父母类而不是
ndb.Model来证明这个问题。看看你是否可以做任何其他事情来缩小范围。也尝试阅读ericlippert.com/2014/03/05/how-to-debug-small-programs。 -
你没有在
B.fun中返回调用super的结果?
标签: python google-app-engine app-engine-ndb