Python:如何从内部静态类中获取外部类变量?

时间:2012-05-31 19:46:43

标签: python nested-class

我想通过使实例Outer(变量)指定变量一次,而不是在所有静态类中使用此变量,我应该怎么做?除了使用非静态方法并将Outer传递给每个内部类之外,还有其他解决方案吗?

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**

2 个答案:

答案 0 :(得分:2)

如果你真的想要这样的东西,元类可能会有所帮助,例如:

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

然后

>>> Outer.Inner.work2()
abc

答案 1 :(得分:1)

没有。内部类方法无法访问外部类的实例。