2013-06-28 2 views
0

좋아요. 그래서 저는 아주 간단한 PyDispatch 신호 설정을 테스트 중이므로 왜 내가 여러 신호를받을 때마다 신호를 수신하는지 파악할 수 없습니다.PyDispatch는 1 회만 보낼 때 여러 개의 신호를 수신합니다.

코드 :이 나에게주는

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 

답변

0

답 : 내 코드에서

사용 :

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

이 시스템을 호출하는 우리를 원인 (), 나중에 초기화 할 때조차도 본인. 이 인스턴스에서는 교환 시스템 만 사용해야합니다. 다른 클래스에서는 init이라고합니다.

임포트시,이 호출에서 3 번 실행되고 나서 실제로는 4 번째로 실행되었습니다.

관련 문제