On Aug 11, 2:00 pm, Stefan Bellon <[EMAIL PROTECTED]> wrote: > On Sat, 11 Aug, Kay Schluehr wrote: > > Honestly, I'd recommend wrapping the generator into a function object, > > create the resource on construction ( or pass it ) and destroy it > > implementing __del__. > > > def gen_value(self): > > while True: > > yield self.iter.next() > > > class GeneratorObj(object): > > def __init__(self, obj, gen): > > self.iter = make_iter(obj) > > self.gen = gen(self) > > > def __del__(self): > > destroy(self.iter) > > > def next(self): > > return self.gen.next() > > Ok, I think there is an __iter__ missing in order to implement the > iterator protocol, and I don't see why the generator cannot be inside > the class itself.
Sure. [...] > But I do not see an output of "gen del" which makes me think that the > destructor is not called, thus not releasing the resource. It seems I > have not completely understood how generators work ... But why shall the destructor be called? Your example does not indicate that a ListGenerator object is somewhere destroyed neither explicitely using del nor implicitely by destroying the scope it is living in. -- http://mail.python.org/mailman/listinfo/python-list