为什么这个gae示例使用类方法?

时间:2013-12-23 13:42:42

标签: python app-engine-ndb class-method

query_bookthis示例中定义为@classmethod,日期是属性。

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)

2 个答案:

答案 0 :(得分:0)

cls.date不是实例属性,而是类属性。

您也可以使用Greeting.date。但是,如果类名称更改为Goodbye,则应将其更改为Goodbye.date,而cls版本不会。{/ p>

答案 1 :(得分:0)

因为在类级别访问属性date允许访问ndb.DateTimeProperty属性的定义,而在实例级别访问允许访问分配给实例的值。

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