2013-10-18 37 views
1

每次看到有人用方法編寫模型時,他們都使用類方法。我認爲這是事情的方式,但決定先用實例方法測試我的代碼。我在模型中使用實例方法沒有問題,但現在我想知道爲什麼每個人似乎總是使用類方法而不是實例方法。在GAE模型中使用類方法有什麼優勢嗎?如果我使用實例方法,會遇到問題嗎?在Google App Engine中,我不應該在模型中使用實例方法嗎?

回答

4

,當你需要一個實體的實例做一些你應該使用實例方法。

您正常使用classmethods當你只需要模型,你不需要或不具備實體。

因此,例如,你有一組特定的使用所有的時間實例的查詢,是有意義的把它定義爲類方法。

例如

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

或者如果您需要工廠。

0

我認爲這是完全沒使用實例方法爲您定製ndb.Model類。

很多時候,它可以幫助你的代碼的可讀性。

我想不出用實例方法,截至目前

例如一個巨大的缺點,

modelInstance.key 

是非常常用的一個實例方法。

如果是

modelClass.key(instance) 

如果將顯著降低你的代碼正確的可讀性? (這當然可以倚重的編碼風格依賴)

相關問題