I'm thinking of using Tim Peters' excellent approach to resource clean up see
http://mail.python.org/pipermail/python-dev/2006-April/063425.html > class _RealTypeResourceCleaner: > def __init__(self, *resources): > self.resources = resources > > def __del__(self): > if self.resources is not None: > for r in self.resources: > r.close() > self.resources = None > > # and typically no other methods are needed, or desirable, in > # this helper class > > class RealType: > def __init__(*args): > ... > # and then, e.g., > self.cleaner = _ResourceCleaner(resource1, resource2) but am wondering exactly what 'resources' are left available when the r.close method is called in the __del__ method of RealTypeResourceCleaner. In particular, can I rely on the module globals of r still being present if the RealType instance is going away because the main script has terminated, ie if the r.close method refers to a global function is it guaranteed to be available when the close is called? I guess I must be asking if referring to a global in a method is actually a reference to that global or does the reference only occur when the code is executed? I have a vague feeling that I came across problems in the past about the order in which modules were finalized. -- Robin Becker -- http://mail.python.org/mailman/listinfo/python-list