我想将一个实例的状态共享给多个子实例,以便它们一起共享父实例的状态。
这是一个工作示例:
class Stack:
def __init__(self):
self.myValues = []
def my_add(self, x):
self.myValues.append(x)
class Worker(Stack):
def __init__(self, my_stack):
super().__init__()
if __name__ == "__main__":
mystack = Stack()
worker1 = Worker(mystack)
worker2 = Worker(mystack)
worker1.my_add(4)
worker2.my_add(5)
print(len(mystack.myValues))
print(len(worker1.myValues))
print(len(worker2.myValues))
输出:
0
1
1
我需要输出为"2 2 2",因此共享mystack
的实例和状态,以便在类Worker
的构造函数中self.mystack=mystack
worker1
和worker2
。
您的Worker
类会忽略传递给它的Stack
实例。这不是继承的工作。Worker
的实例使用Stack
的实例;它们本身不应该是Stack
的实例。
class Stack:
def __init__(self):
self.myValues = []
def my_add(self, x):
self.myValues.append(x)
class Worker:
def __init__(self, my_stack):
self.stack = my_stack
def my_add(self, x):
self.stack.my_add(x)
@property
def myValues(self):
return self.stack.myValues