The FieldSet constructor accepts a request kwarg. If it is supplied, then self._request will be non-None.
FieldSet.bind() also accepts a request object as a kwarg with a default of None. If a request is not supplied to bind(), then bind() will overwrite mr._request with None:
def bind(self, model=None, session=None, data=None, request=None,
with_prefix=True):
# ...
mr = object.__new__(self.__class__)
mr.__dict__ = dict(self.__dict__)
# ...
mr._request = request
return mr
bind() should not set mr._request if request is None or falsy.