如何访问上下文管理器的属性?

tri*_*ta2 1 python contextmanager

我想完成以下事情:

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 '''
Run Code Online (Sandbox Code Playgroud)

有许多Obj属性是需要关闭/删除/等的资源.我希望使用上下文管理器来设置它们然后摆脱它们.但是我发现我尝试时无法访问属性:

with my_context() as cont:
    cont.obj1  # doesn't work
Run Code Online (Sandbox Code Playgroud)

有没有办法可以访问这些属性?

Kev*_*vin 5

要使with... as语法起作用,您__enter__()必须返回一个值.

如果要使用与my_context类提供的属性相同的属性,则可能需要返回self.