我正在尝试将我的功能组织到类中。我想使用“内部”类中“外部”类的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属性? 还是在类中将功能分组在一起的常规方式是什么?
答案 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
应使其正常工作。