Я думаю, что ваш комментарий выше в правильных строках - вам нужно иметь ссылку или «дескриптор» для объекта, которому вы хотите отправить данные.
Другими словами, отправляющий объект фабрики должениметь ссылку на принимающий объект фабрики, если вы хотите использовать связь объекта с объектом - то есть вызовы метода.Одним из способов достижения этого является передача имени фабрики-получателя фабрике-отправителю при инициализации.
Это не всегда очевидно из примеров, но фабрика может передавать данные при инициализации.Например, в приведенном выше примере строка, которая создает MultiEchoFactory, может быть изменена на:
reactor.listenTCP(4321, MultiEchoFactory(someOtherObject))
, а сам объект MultiEchoFactory изменен в методе init :
class MultiEchoFactory(Factory):
protocol = MultiEcho
def __init__(self, otherObjectReference):
self.echoers = []
self.otherObject = otherObjectReference
Теперь у вас есть ссылка на другой объект и вызов метода для него.
Другой подход может заключаться в том, чтобы иметь совершенно отдельный объект, на который все ваши фабрики ссылаются при инициализации, и который действует каксвоего рода сервер поиска ссылок на объектные ссылки, когда один объект хочет говорить с другим.Эта функциональность может быть предоставлена функцией, если вы не хотите использовать объект.