构造函数定义

时间:2014-10-14 14:41:37

标签: python function python-3.x scope

我目前有一些这样的代码:

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函数会导致使用它的类出现同样的问题。

我应该如何重组代码?

1 个答案:

答案 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