File engine.py:
class Engine(object):
    def __init__(self, variable):
        self.variable = variable
class Event(object):
    def process(self):
        variable = '123'  # this should be the value of engine.variable
Python
>>> from engine import Engine, Event
>>> engine = Engine('123')
>>> e = Event()
>>> e.process()
What's the best way to accomplish this? Because of limitations with the Event class (it's actually a subclass of a third-party library that I'm splicing new functionality into) I can't do something like e = Event(engine).
In depth explanation:
Why am I not using e = Event(engine)?
Because Event is actually a subclass of a third-party library. Additionally, process() is an internal method. So the class actually looks like this:
class Event(third_party_library_Event):
    def __init__(*args, **kwargs):
        super(Event, self).__init__(*args, **kwargs)
    def _process(*args, **kwargs):
        variable = engine.variable
        # more of my functionality here
        super(Event, self)._process(*args, **kwargs)
My new module also has to run seamlessly with existing code that uses the Event class already. So I can't add pass the engine object to each _process() call or to the init method either.
 
     
     
     
    