1. 程式人生 > >Python沒有"內部類"這一說法,內部類訪問外部類例項的成員,需要將外部類例項作為引數傳入。

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!
>>>

 

https://bbs.csdn.net/topics/90479518