Python沒有"內部類"這一說法,內部類訪問外部類實例的成員,需要將外部類實例作爲參數傳入。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章