Fires an event, executing all it's handlers with given
        args and kwargs.
        You can also use Event() directly instead of Event.fire()

def fire(self, *args, **kwargs):
        """Fires an event, executing all it's handlers with given
        args and kwargs.
        You can also use Event() directly instead of Event.fire()"""
        if self.eventmanager:
            # Fire global event. Assuming we have an eventmanager.
            self.eventmanager.got_event(self.name, *args, **kwargs)

        for handler in self:  # Iterate over handlers
            try:
                handler(*args, **kwargs)  # Execute handler with given args.
            except StopIteration:  # Stop iterating if handler raised StopIter
                break