Python: How to get Outer class variables from inner static class?
Question: I want to specify variable once by making instance Outer(variable), than this
variable use in all static classes, how should I do that? Is there any other
solution than use not static methods and pass Outer into each inner class?

    
    
    class Outer():
        def __init__(self, variable):
            self.variable= variable
    
        class Inner1():        
            @staticmethod
            def work1():
                **print Outer.variable**
    
        class Inner2():        
            @staticmethod
            def work2():
                **print Outer.variable**
    


Answer: If you really want such thing, metaclass may help a little, for example:

    
    
    from types import ClassType
    
    class OuterMeta(type):
        def __new__(mcls, name, base, attr):
            ret = type.__new__(mcls, name, base, attr)
            for k, v in attr.iteritems():
                if isinstance(v, (ClassType, type)):
                    v.Outer = ret
            return ret
    
    class Outer(object):
        __metaclass__ = OuterMeta
        var = 'abc'    
        class Inner:
            def work(self):
                print self.Outer.var
            @classmethod
            def work2(cls):
                print cls.Outer.var
    

then

    
    
    >>> Outer.Inner.work2()
    abc
    

