'Returns the tuple of properties in the projection or None.
Projected results differ from normal results in multiple ways:
- they only contain a portion of the original entity and cannot be put;
- properties defined on the model, but not included in the projections will
have a value of None, even if the property is required or has a default
value;
- multi-valued properties (such as a ListProperty) will only contain a single
value.
- dynamic properties not included in the projection will not appear
on the model instance.
- dynamic properties included in the projection are deserialized into
their indexed type. Specifically one of str, bool, long, float, GeoPt, Key
or User. If the original type is known, it can be restored using
datastore_types.RestoreFromIndexValue.
However, projection queries are significantly faster than normal queries.
Projection queries on entities with multi-valued properties will return the
same entity multiple times, once for each unique combination of values for
properties included in the order, an inequaly property, or the projected
properties.
Returns:
The list of properties in the projection, or None if no projection is
set on this query.'

def projection(self):

    raise NotImplementedError
