class A:
def __init__(self, x):
self.x = x
self.cleanup_done = False
def close(self):
print(f'A x={self.x} being cleaned up.')
self.cleanup_done = True
def __del__(self):
if not self.cleanup_done:
self.close()
class B:
def __init__(self, x):
self.a = A(x)
def foo(self):
print("I am doing some work")
def bar():
b = B(9)
b.foo()
def other_function():
pass
if __name__ == '__main__':
bar()
other_function()
Y2xhc3MgQToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKICAgICAgICBzZWxmLnggPSB4CiAgICAgICAgc2VsZi5jbGVhbnVwX2RvbmUgPSBGYWxzZQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBwcmludChmJ0EgeD17c2VsZi54fSBiZWluZyBjbGVhbmVkIHVwLicpCiAgICAgICAgc2VsZi5jbGVhbnVwX2RvbmUgPSBUcnVlCiAgICAgICAgCgogICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuY2xlYW51cF9kb25lOgogICAgICAgICAgICBzZWxmLmNsb3NlKCkKCgpjbGFzcyBCOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOgogICAgICAgIHNlbGYuYSA9IEEoeCkKCiAgICBkZWYgZm9vKHNlbGYpOgogICAgICAgIHByaW50KCJJIGFtIGRvaW5nIHNvbWUgd29yayIpCgoKZGVmIGJhcigpOgogICAgYiA9IEIoOSkKICAgIGIuZm9vKCkKCmRlZiBvdGhlcl9mdW5jdGlvbigpOgogICAgcGFzcwoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIGJhcigpCiAgICBvdGhlcl9mdW5jdGlvbigp