0

わかりましたので、私は非常に単純な PyDispatch 信号のセットアップをテストしていますが、送信するたびに複数の信号を受信する理由を理解できないようです。

コード:

class Strategy():

def __init__(self,name,exchange=Exchange(), system=System()):
    self.SIGNAL='Strategy'
    self.SENDER = 'Strategy'
    self.system = system
    self.name = name
    self.connect_to_system()


def connect_to_system(self):
    dispatcher.connect(self.receive_message, signal='System', sender='System')
    self.system.connect_strategy(self.name)

def send_message(self,info, strategy):
    print 'send strat'
    dispatcher.send(signal=self.SIGNAL,sender=self.SENDER,info=info,strategy=strategy)

class System():
    def __init__(self,exchange=Exchange()):
        self.SIGNAL='System'
        self.SENDER='System'
        dispatcher.connect(self.receive_message, signal=dispatcher.Any, sender=dispatcher.Any)

    def receive_message(self, sender, signal, **kwargs):
        if sender == 'Strategy':
            print kwargs, sender, signal

これは私に与えます:

In [10]: strat.send_message("OK",'sender')
send strat
{'info': 'OK', 'strategy': 'sender'} Strategy Strategy
{'info': 'OK', 'strategy': 'sender'} Strategy Strategy
{'info': 'OK', 'strategy': 'sender'} Strategy Strategy
{'info': 'OK', 'strategy': 'sender'} Strategy Strategy
4

1 に答える 1

0

答え:

私のコードでは、次を使用しています。

def __init__(self,name,exchange=Exchange(), system=System()):

後で自分で初期化する場合でも、System() を呼び出す必要があります。この場合、交換システムを使用する必要があります。他のクラスで同じinitを呼び出していました。

インポート時に、それらの呼び出しから 3 回実行され、4 回目は実際に実行したかった時間でした。

于 2013-06-28T17:21:17.713 に答える