如何访问上下文管理器的属性?
How can I access attributes of a context manager?
我想完成类似的事情:
class my_context(object):
def __init__(self):
self.obj1 = Obj()
self.obj2 = Obj()
...
def __enter__(self):
''' initialize objects '''
def __exit__(self, type, value, tb):
''' uninitialize objects '''
有许多 Obj
属性是需要 closed/deleted/etc 的资源。我希望使用上下文管理器来设置它们,然后摆脱它们。但是我发现我在尝试时无法访问这些属性:
with my_context() as cont:
cont.obj1 # doesn't work
有什么方法可以访问这些属性?
要使 with... as
语法起作用,您的 __enter__()
必须 return 一个值。
如果您想使用与 my_context
class 提供的相同的属性,您可能需要 return self
.
我想完成类似的事情:
class my_context(object):
def __init__(self):
self.obj1 = Obj()
self.obj2 = Obj()
...
def __enter__(self):
''' initialize objects '''
def __exit__(self, type, value, tb):
''' uninitialize objects '''
有许多 Obj
属性是需要 closed/deleted/etc 的资源。我希望使用上下文管理器来设置它们,然后摆脱它们。但是我发现我在尝试时无法访问这些属性:
with my_context() as cont:
cont.obj1 # doesn't work
有什么方法可以访问这些属性?
要使 with... as
语法起作用,您的 __enter__()
必须 return 一个值。
如果您想使用与 my_context
class 提供的相同的属性,您可能需要 return self
.