class A:
def __enter__(self):
print('entered')
return self
def __exit__(self, *exc_info):
self.attr = 'reset'
print('exited')
def f():
with A() as instance:
instance.attr = 'set'
print('attribute set')
return instance
# Will this always be True?
print(f().attr == 'reset')
Y2xhc3MgQToKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHByaW50KCdlbnRlcmVkJykKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2luZm8pOgogICAgICAgIHNlbGYuYXR0ciA9ICdyZXNldCcKICAgICAgICBwcmludCgnZXhpdGVkJykKCgpkZWYgZigpOgogICAgd2l0aCBBKCkgYXMgaW5zdGFuY2U6CiAgICAgICAgaW5zdGFuY2UuYXR0ciA9ICdzZXQnCiAgICAgICAgcHJpbnQoJ2F0dHJpYnV0ZSBzZXQnKQogICAgICAgIHJldHVybiBpbnN0YW5jZQoKCiMgV2lsbCB0aGlzIGFsd2F5cyBiZSBUcnVlPwpwcmludChmKCkuYXR0ciA9PSAncmVzZXQnKQ==