Python:在内部嵌套类中使用外部类的self.variable

时间:2019-09-30 13:13:37

标签: python class

我正在尝试将我的功能组织到类中。我想使用“内部”类中“外部”类的self.file_list属性。

class Outer:
    """Outer Class"""
    def __init__(self, file_list):
        self.file_list=file_list
        ## instantiating the 'Inner' class
        self.inner = self.Inner()


    ## inner class
    class Inner:
        """First Inner Class"""
        def __init__(self):
            print (Outer.file_list)  <-- this line doesn't work 

            pass
clean =Outer (['cats', 'dogs'])

但是我遇到此错误:

<ipython-input-63-0dfab321da74> in __init__(self)
     10         """First Inner Class"""
     11         def __init__(self):
---> 12             print (self.file_list)
     13 
     14             pass

AttributeError: 'Inner' object has no attribute 'file_list'

如何通过内部 init 方法访问self.file_list属性? 还是在类中将功能分组在一起的常规方式是什么?

1 个答案:

答案 0 :(得分:2)

Outer是该类,而file_list是该类的实例属性。您无法访问Outer.file_list,因为它不存在。

在创建Inner的实例时,您需要传递Outer父实例才能访问其成员。

将代码更改为:

class Outer:
    """Outer Class"""
    def __init__(self, file_list):
        self.file_list=file_list
        ## instantiating the 'Inner' class
        self.inner = self.Inner(self)


    ## inner class
    class Inner:
        """First Inner Class"""
        def __init__(self, outer_parent):
            print (outer_parent.file_list)

            pass

应使其正常工作。