今天遇到一个Python内部类中如何访问外部类的属性和方法的问题,在网上查了一下,推荐以下两种:
1. 传入外部类的实例
参考:https://www.cnblogs.com/aguncn/p/4200113.html
#传递外部类的实例
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
参考:http://lonelycoding.com/access-outer-class-from-inner-class-in-python/
# 传递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 InnerClassouter2 = OuterClassB()
InnerClassDef = outer2._class_def_inner_class()
inner = InnerClassDef()
inner.inner_func_1()