0

我想通过创建实例 Outer(variable) 来指定一次变量,而不是在所有静态类中使用这个变量,我应该怎么做?除了使用非静态方法并将 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**
4

2 回答 2

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
于 2012-06-01T04:08:47.087 回答
1

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

于 2012-05-31T19:49:00.130 回答