除了傳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!
>>>