Well it doesn't really override it.  This particular function is just trying to return the key, once it has it, it returns it.  It doesn't guarantee the id/self are in sync.  I guess an alternative could be to use `id *datastore.Key` instead of self.  That way you **can't** run into sync issues.