1. 程式人生 > >Python內部類中如何訪問外部類中的屬性和方法

Python內部類中如何訪問外部類中的屬性和方法

今天遇到一個Python內部類中如何訪問外部類的屬性和方法的問題,在網上查了一下,推薦以下兩種:

1. 傳入外部類的例項

#傳遞外部類的例項
class OuterClassA(object):
    def __init__(self):
        self.a = 0
    
    def outer_func_1(self, text):
        print(text)
    

    class InnerClass(object):
        def __init__(self):
            self.out = OuterClassA()
        
        def inner_func_1(self):
            self.out.outer_func_1('balabala')
        

outer = OuterClassA()
outer.outer_func_1('abcdefg')
outer.InnerClass().inner_func_1()

2. 將內部類封裝在函式中,並傳入self

# 傳遞self
class OuterClassB(object):
    def __init__(self):
        self.a = 0
    
    def outer_func_1(self, text):
        print(text)
    
    def _class_def_inner_class(self):
        outter_class = self
        class InnerClass(object):
            def __init__(self):
                self.outter = outter_class
            
            def inner_func_1(self):
                self.outter.outer_func_1('aaabbb')
        return InnerClass

outer2 = OuterClassB()
InnerClassDef = outer2._class_def_inner_class()
inner = InnerClassDef()
inner.inner_func_1()