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 に答える