我目前有一些这样的代码:
def print_to_window(text):
window.print_text(text)
do_other_stuff()
class WithMethodsThatCallprint_to_window:
something()
class ThatAlsoHasMethodsThatCallprint_to_window:
something()
# actual game code starts
window = Window()
a = WithMethodsThatCallprint_to_window()
while True:
get_input()
do_stuff()
调用Window
会打开窗口,当我导入模块进行测试时,我不希望这样做。
我想将其重组为main
函数中的“实际游戏代码”,然后执行if __name__ == "__main__": main()
。但是,我无法弄清楚如何做到这一点。
如果我只是将#actual game code starts
之后的代码移到函数中,那么window
不再是全局变量,而print_to_window
无法访问它。
但是,将print_to_window
移动到main
函数会导致使用它的类出现同样的问题。
我应该如何重组代码?
答案 0 :(得分:1)
您可以在全局级别定义名称window
,然后将其分配给main函数中的对象:
window = None
def main():
global window
window = Window()
# do things
print_to_window("some text")
if __name__ == "__main__":
main()
编辑:忘记" global window
"在main
中,允许print_to_window
查看修改后的window
。