除了传outter的实例做为参数外,似乎没有简单的方式了。
内部类本身是不知道自己被哪个外部类包含的,也就是说语言中没有提供访问外部类的关键字或者方法,因此除了使用的语法有一点点不同外,其他和外部类没有什么区别的。
就是传递参数了
class Outter:
name = None
def __init__(self, name):
self.name = name
def a(self):
innerObj = self.Inner(self)
innerObj.test()
class Inner:
out = None
def __init__(self, out=None):
self.out = out
def test(self):
print self.out.name
结果:
>>> t = outter("hello, world!")
>>> t.a()
hello, world!
>>> class outter:
... name = None
... def __init__(self, name):
... self.name = name
... def a(self):
... innerObj = self.inner(self)
# 将外部类的实例(self)传入内部类的构造函数inner(self)
... innerObj.test()
...
... class inner:
... out = None
... def __init__(self, out=None):
... self.out = out
... def test(self):
... print self.out.name
...
>>> t = outter("hello, world!")
>>> t.a()
hello, world!
>>>