我目前正在尝试在Python中使用回调。
我想要做的是从回调中返回一个值,然后使用此返回值进行条件处理。因此,例如,如果用户输入“Y”,我想将某些内容打印到控制台。
由于我是Python新手,下面的代码尽可能接近我的目的但是:
a)我不确定这是否是Pythonic的做法
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
答案 0 :(得分: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
答案 1 :(得分: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)