在Google App Engine中,我不应该在模型中使用实例方法吗?

时间:2013-10-18 05:07:33

标签: python google-app-engine

每当我看到有人用方法编写模型时,他们就会使用类方法。我认为这是必须完成的事情,但我决定先用实例方法测试我的代码。我在模型中使用实例方法没有问题,但现在我想知道为什么每个人似乎总是使用类方法而不是实例方法。在GAE模型中使用类方法有一些优势吗?如果我正在使用实例方法,我会遇到问题吗?

2 个答案:

答案 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)

如果会显着降低代码的可读性吗? (这当然在很大程度上取决于你的编码风格)