我想通过使实例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**
答案 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)
没有。内部类方法无法访问外部类的实例。