在C1中实例化RefreshLabels,并将对象传递给C2和C3,当在C2中改变对象某一变量时,在C3中也可以得到该变量的最新值。
class RefreshLabels:
def __init__(self):
self.rect_labels = []
class C1:
def __init__(self):
self.c2 = C2()
self.c3 = C3()
self.refreshLabels = RefreshLabels()
self.c2.refreshLabels = self.refreshLabels
self.c3.refreshLabels = self.refreshLabels
class C2:
def __init__(self):
self.refreshLabels = None
def fun1(self):
self.refreshLabels.rect_labels.append([200, 100])
print(self.refreshLabels.rect_labels)
class C3:
def __init__(self):
self.refreshLabels = None
def fun1(self):
print(self.refreshLabels.rect_labels)
c1 = C1()
c1.c2.fun1()
c1.c2.fun1()
c1.c3.fun1()
输出结果:
[[200, 100]]
[[200, 100], [200, 100]]
[[200, 100], [200, 100]]