在Python中实现清理方法的理想方法

时间:2017-09-28 22:13:29

标签: python code-cleanup

重写以使其更清晰,但我相信Clark J得到了它。我的文件内容如下:

class tests:

    def test1(self):
        create something1

    def test2(self):
        create something2
    .
    .
    .
    .

    def test19(self):
        cleanup something1

    def test20(self):
        cleanup something2

如果test1或test2失败,它会留下something1,something2。想知道是否使用"尝试:最后:"在下面的样式中是可以的,这样test19和test20每次都会在程序退出之前运行,或者如果有更理想的方式可以这样做。基本上我的目标是确保test19和test20总是在程序退出之前运行,在其他测试中出现故障。感谢。

class tests:

    try:

        def test1(self):
            create something1

        def test2(self):
            create something2
        .
        .
        .
        .

    finally:

        def test19(self):
            cleanup something1

        def test20(self):
            cleanup something2

1 个答案:

答案 0 :(得分:1)

我没有看到你不能使用try finally块的原因。

或者您可以使用atexit模块。在程序完成终止后运行已注册的函数。它是python 2和python 3中标准库的一部分。

import atexit

@atexit.register   #decorator call only works for functions without args
def function_to_run_on_exit():
    print ("doing some awesome teardown and cleanup")

def exit_function_with_args(foo, bar):
    print("cleaning up {} and {}").format(foo, bar))



atexit.register(exit_function_with_args, 'my foo', 'my bar')