Python沒有"內部類"這一說法,內部類訪問外部類例項的成員,需要將外部類例項作為引數傳入。
阿新 • • 發佈:2018-11-09
除了傳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!
>>>