2013-12-23 44 views
1

query_bookthis示例定義爲@classmethod,date是一個屬性。爲什麼這個gae示例使用類方法?

cls.date是什麼意思?

如果它引用實例屬性,那麼它爲什麼在@classmethod

如果它沒有引用一個實例,那麼它的date是指什麼?

編輯

date似乎並沒有成爲一個類的屬性,因爲下面的代碼打印出了兩個實例兩個不同的日期。如果它是一個類屬性,它將打印相同的值。

g1 = Greeting() 
g2 = Greeting() 
g1.put() 
g2.put() 
self.response.out.write(g1.date) 
self.response.out.write("<br>") 
self.response.out.write(g2.date) 

回答

0

因爲在類級別訪問date屬性允許訪問ndb.DateTimeProperty屬性的定義,而在實例級訪問允許訪問分配給實例的值。

type(g1.date).__name__ == "datetime" 
type(Greeting.date).__name__ == "DateTimeProperty" 
0

cls.date不是實例屬性,而是類屬性。您可以使用Greeting.date。但是,如果班級名稱更改爲「再見」,則應更改爲Goodbye.date,而cls版本不更改。

+0

我編輯了這個問題,因爲它太長了評論:'date'似乎是一個實例屬性,因爲它的值在不同的實例中是不同的。 – stenci

+1

@stenci,' .date'是實例屬性,而'Greeting.date','cls.date'(在類方法中)是類atttribute。 – falsetru

+0

只有一個具有'date'屬性的類定義。如果'g1.date'!='g2.date',那麼什麼是'Greetings.date'? – stenci

相關問題