Because accessing the attribute date
at class level allows to access the definition of the ndb.DateTimeProperty
attribute, while accessing at instance level allows to access the value assigned to the instance.
type(g1.date).__name__ == "datetime"
type(Greeting.date).__name__ == "DateTimeProperty"