每当我看到有人用方法编写模型时,他们就会使用类方法。我认为这是必须完成的事情,但我决定先用实例方法测试我的代码。我在模型中使用实例方法没有问题,但现在我想知道为什么每个人似乎总是使用类方法而不是实例方法。在GAE模型中使用类方法有一些优势吗?如果我正在使用实例方法,我会遇到问题吗?
答案 0 :(得分:4)
当您需要实体的实例来执行某些操作时,您应该使用实例方法。
当您只需要模型并且不需要或拥有该实体时,通常使用classmethod。
因此,例如,您对一直使用的特定实例集进行查询,将其定义为classmethod是有意义的。
e.g。
@classmethod
def do_somespecial_query(cls):
return cls.query().filter(cls.some_property = True)
或者如果您需要工厂。
答案 1 :(得分:0)
我认为为自定义ndb.Model类使用实例方法完全没问题。
很多时候,它有助于您的代码的可读性。
我想不出现在使用实例方法的一个巨大缺点
例如,
modelInstance.key
是一种经常使用的实例方法。
如果是
modelClass.key(instance)
如果会显着降低代码的可读性吗? (这当然在很大程度上取决于你的编码风格)