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 に答える