允许对象访问其拥有对象的属性

时间:2017-01-25 18:59:24

标签: python

我有一大堆有效算法的类,它们都继承自Mechanism类。然后我有一个MechanismStack类,它包含一堆这些算法类的列表,它们都是可互换的/模块化的 - 即Mechanism1.encode()的输出作为输入等进入Mechanism2.encode()(实际上是一个队列功能)。

其中一些类产生的额外数据不仅仅是输出。我想将这些额外的数据存储在MechanismStack类中(它也是一个对象 - 有多个不同的堆栈由不同的算法组成)

class MechanismStack:
    self.stack = [Mechanism1(), Mechanism2(), Mechanism3()]
    self.attribute = list()
    def encode(self, input):
        #process input through self.stack Mechanisms

class Mechanism1(Mechanism):
    def function(self, input):
        #code
        owningMechanismStack.attribute = ['some', 'list']

myStack = MechanismStack()
myStack.encode('myInputString')

1 个答案:

答案 0 :(得分:1)

添加拥有MechanismStack作为Mechanism的属性,您在调用构造函数时提供该属性。

class Mechanism:
    def __init__(self, owner):
        this.owningMechanismStack = owner

class MechanismStack:
    self.stack = [Mechanism1(self), Mechanism2(self), Mechanism3(self)]
    ...