微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从构造函数参数继承类实例的状态?

如何解决如何从构造函数参数继承类实例的状态?

我想将一个实例的状态分享给多个孩子,让他们一起分享父母的状态。

这是一个工作示例:

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 的实例和状态共享给 worker1worker2 没有 {{1 }} 在类 self.mystack=mystack 的构造函数中。

解决方法

您的 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。