1

每次我看到有人用方法编写模型时,他们都使用类方法。我认为这是必须做的事情,但决定先用实例方法测试我的代码。我在模型中使用实例方法没有任何问题,但现在我想知道为什么每个人似乎总是使用类方法而不是实例方法。在 GAE 模型中使用类方法有什么好处吗?如果我使用实例方法,我会遇到问题吗?

4

2 回答 2

4

当你需要一个实体的实例来做某事时,你应该使用实例方法。

当您只需要模型而不需要或拥有实体时,通常会使用类方法。

因此,例如,您有一个对您一直使用的特定实例集的查询,将其定义为类方法是有意义的。

例如

@classmethod
def do_somespecial_query(cls):
    return cls.query().filter(cls.some_property = True)

或者如果您需要工厂。

于 2013-10-18T05:50:26.993 回答
0

我认为为您的自定义 ndb.Model 类使用实例方法是完全可以的。

很多时候,它有助于提高代码的可读性。

到目前为止,我想不出使用实例方法的巨大缺点

例如,

modelInstance.key

是一个非常常用的实例方法。

如果是

modelClass.key(instance)

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

于 2013-10-18T05:12:53.600 回答