query_book
在this示例中定义为@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)
答案 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"