def __init__(<EOL>self,<EOL>event_names=None,<EOL>create_events_on_access=None,<EOL>create_events_on_fire=None,<EOL>event_factory=None,<EOL>internal_event_factory=None,<EOL>events_mapping_factory=None,<EOL>handlers_container_factory=None<EOL>):
if create_events_on_access is not None:<EOL><INDENT>self.create_events_on_access = create_events_on_access<EOL><DEDENT>if create_events_on_fire is not None:<EOL><INDENT>self.create_events_on_fire = create_events_on_fire<EOL><DEDENT>if event_factory:<EOL><INDENT>self.event_factory = event_factory<EOL><DEDENT>if internal_event_factory:<EOL><INDENT>self.internal_event_factory = internal_event_factory<EOL><DEDENT>if events_mapping_factory:<EOL><INDENT>self.events_mapping_factory = events_mapping_factory<EOL><DEDENT>if handlers_container_factory:<EOL><INDENT>self.handlers_container_factory = handlers_container_factory<EOL><DEDENT>self.handlers = self.handlers_container_factory()<EOL>self.events = self.events_mapping_factory()<EOL>self.clear()<EOL>if event_names:<EOL><INDENT>self.add_events(event_names)<EOL><DEDENT>
Init.

:param list event_names: List of event names to create on start (optional)
:param bool create_events_on_access: If True, create event on getitem, eg access.
:param bool create_events_on_fire: if True, create events on fire.
:param callable event_factory: Factory to create Event instances
:param callable events_mapping_factory: Factory to create mapping to store events
:param callable handlers_container_factory: Factory to create container to store handlers