我在Python中处理类变量时遇到问题。我有一个代码如下。
class TempClass:
resource = xlwings.Book() # xlwings is a library manipulating Excel file.
#...
在这里,要清除'资源',我需要执行
resource.close()
当清除类(非对象)时是否调用了内置函数,以便我可以在该函数中编写上述代码?或者有没有办法清除“资源”?
我的Python版本是3.6
答案 0 :(得分:0)
不要使用类变量。只要你的python解释器没有关闭,类就存在,类变量是活着的。
通常使用需要关闭的资源,您只需使用上下文管理器(例如contextlib.closing
):
import contextlib
# I don't have xlwings so I create some class that acts like it:
class Book(object):
def __init__(self):
print('init')
def close(self):
print('close')
实际"背景"可以像这样创建和使用。在块内部,资源处于活动状态,并在块结束后关闭。我使用print
来显示每个方法的调用位置:
print('before the context')
with contextlib.closing(Book()):
print('inside the context')
print('after the context')
打印哪些:
before the context
init
inside the context
close
after the context