Consider the following Python (runs in 2.x or 3.x):
class Outer(object):
pass
class Inner(object):
def __init__(self):
print("Inner.self", self)
o = Outer()
i = o.Inner()
I want to get my hands on o while inside Inner.__init__(). But:
- I don't want
oto be an explicit parameter toInner. - I want
O.Innerando.Innerto be a class object, not something weird like a closure.
Can you suggest how I might achieve this?
Right now my best idea is to use thread local storage. In my use case, whenever I construct an o.Inner(), I'm already inside a method on o somewhere, and it wouldn't be a big deal to add
threading.local()["my o object"] = o
to my code.
This gives you an idea of the level of depravity I'm willing to consider.