【问题标题】:How to inherit class instance's state from constructor argument?如何从构造函数参数继承类实例的状态?
【发布时间】:2021-07-01 16:59:55
【问题描述】:

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

这是一个工作示例:

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的实例和状态共享给worker1和worker2没有self.mystack=mystack类的构造函数中的self.mystack=mystack 987654327@.

【问题讨论】:

    标签: python inheritance superclass


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-05-06
      • 1970-01-01
      • 2023-03-14
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      相关资源
      最近更新 更多