[英]generator yielding upon object instantiation
我正在开发一个大型 python 项目,其中在运行时需要用户输入。 输入要求被封装在一个包含一些元信息的 class Decision
中。 目前,这些决定是在他们自己的__init__
中处理的(见下文)。 这些决定广泛分布在代码中。
我想要实现的是将work()
function 转换为生成决策的生成器,并且可以在顶层进行处理(请参阅评论)。
在下面的示例中,我可以轻松地从somewhere_deep_in_code
的deep_in_code 中做出决定以使其work
,但这在实际代码中是不可能的。 我虽然可以在另一个线程中处理work
中的所有内容并等待发生的决定。 但是这里没有任何实际的异步,这样做似乎是错误的。 也许事件或协程可以解决问题,但我不知道如何。 由于 tue 事实上这是一个非常特殊的问题,我在评论来源中没有发现任何有用的信息。 因此,我会感谢任何帮助或想法。
def handle_decision(decision):
decision.value = 42
class Decision:
def __init__(self, questions):
self.questions = questions
self.value = None
handle_decision(self) # this should go to top level
def somewhere_deep_in_code():
decision = Decision("item1")
# do sth with decision.value
print(decision.value)
somewhere_even_deeper_in_code()
def somewhere_even_deeper_in_code():
decision = Decision("item2")
# do sth with decision.value
print(decision.value)
def work():
somewhere_deep_in_code()
def main():
# current implementation
work()
# how it should be
for decision in work():
handle_decision(decision)
if __name__ == '__main__':
main()
一旦您要求做出决定,您是要等待一项还是继续执行其他任务? 本文列出了 Python 中可用的事件系统的最新列表: Python 中的事件系统。 像 Kivy 这样的 GUI 框架正在处理像事件这样的用户交互。 也许你可以看看一个灵感?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.