<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def once(self, event, f=None):
 """The same as ``ee.on``, except that the listener is automatically removed after being called. """

        def _wrapper(f):
            def g(*args, **kwargs):
                self.remove_listener(event, f)
                # f may return a coroutine, so we need to return that
                # result here so that emit can schedule it
                return f(*args, **kwargs)

            self._add_event_handler(event, f, g)
            return f

        if f is None:
            return _wrapper
        else:
            return _wrapper(f)