2013-10-25 3 views
1

현재 파이썬에서 콜백을 사용하려고합니다.파이썬에서 콜백 값 반환하기

콜백에서 값을 반환하고 조건부 처리에이 반환 값을 사용하고 싶습니다. 예를 들어 사용자가 "Y"를 입력하면 콘솔에 무엇인가를 인쇄하고 싶습니다. 나는 현재 얻을 수 있지만 나는 아래의 코드를 파이썬 새로운 오전으로

는 가까운 :

A)가)

B 올바른을 그 일의 파이썬 방법 인 경우에 나는 확실하지 않다 그것을하는 방법?

class Observable: 
     def subscribe(self,callback): 
      self.callback = callback 

     def fire(self): 
      self.callback() 

    class CallBackStuff: 
     def doCallback(self): 
      userInput = raw_input("Please enter Y or N?") 
      return userInput 

    if __name__ == '__main__': 
     s = CallBackStuff() 
     o = Observable() 
     o.subscribe(s.doCallback) 
     t = o.fire() 
     print t 
+3

왜 'return self.callback()'이 아닌가? – BartoszKP

+0

@GamesBrainiac 관련이 있지만 반환 값이 없다고 생각합니다. – BartoszKP

+0

@BartoszKP 당신 말이 맞습니다. –

답변

1

내가 코드에서이 작업을 수행하는 생각할 수있는 가장 쉬운 방법은 바로 CallBackStuff 객체에 로 변수를 입력을 저장하는 것입니다. 그런 다음 콜백 함수를 호출 한 후 CallBackStuff 인스턴스의 입력 데이터에 액세스 할 수 있습니다. 아래 예.

class Observable: 
    def subscribe(self,callback): 
     self.callback = callback 

    def fire(self): 
     self.callback() 

class CallBackStuff: 
    storedInput = None # Class member to store the input 
    def doCallback(self): 
     self.storedInput = raw_input("Please enter Y or N?") 

if __name__ == '__main__': 
    s = CallBackStuff() 
    o = Observable() 
    o.subscribe(s.doCallback) 
    o.fire() 
    print s.storedInput # Print stored input from call-back object 
0
class Observable(object): 
    def __call__(self, fun): 
     return fun() 


class Callback(object): 
    def docallback(self): 
     inp = raw_input() 
     return inp 

if __name__ == "__main__": 
    print Observable()(Callback().docallback)