У меня есть целая группа классов, которые являются эффективными алгоритмами, и все они наследуются от класса 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')
Это была моя первая мысль и то, что я сейчас реализовал, однако я добавил ее только для Механизмов, которые генерируют дополнительные метаданные. Было бы лучше добавить владельца для всех или просто тех, кому нужен доступ к MechanismStack? – Aeroblop
Возможно, это зависит от общего дизайна. Я сделал это в суперклассе, чтобы сохранить его гибким, чтобы «MechanismStack» не нуждался в деталях, для каких подклассов «Механизм» нужны обратные ссылки, а какие нет. – Barmar