我试图理解Python2.7中名称空间的嵌套。在
考虑以下不工作的代码:class c(object):
def debug(self):
print globals(),locals()
print x,y
class a(object):
x=7
def __init__(self):
self.y=9
class b(object):
def debug(self):
print globals(),locals()
print x,y
class d(c):
pass
如何从调用中访问变量x和y
^{pr2}$
他们似乎都看不到x或y
讨论后编辑,似乎只有显式地扩展嵌套类的信息才能达到我想要的(避免引用全局变量)。例如class a(object):
#
@classmethod
def _initClass(cls):
for v in dir(cls):
if type(cls.__dict__[v])==type:
setattr(cls.__dict__[v],'vader',cls)
#
x=7
class b(object):
def debug(self):
print b.vader.x
class d(c):
pass
a._initClass()
即使这种技术对于访问实例变量似乎也没有什么用处,正如a().d().debug序列中所预期的那样。在