Joseph L. Casale wrote: > I am writing a class to provide a db backed configuration for an > application. > > In my programs code, I import the class and pass the ODBC params to the > class for its __init__ to instantiate a connection. > > I would like to create a function to generically access a table and > provide an iterator. How does one create a function in a class that takes > an argument and returns an iterator? I saw some examples where the class > gets instantiated with the table defined but I was hoping not to do this > so I could continue to access various tables through one > connection/cursor.
Have the method yield instead of returning: >>> class Names: ... def __init__(self, template): ... self.template = template ... def generate_names(self, upto): ... for index in range(1, upto+1): ... yield self.template.format(index) ... >>> names = Names("file{}.txt") >>> for name in names.generate_names(3): ... print name ... file1.txt file2.txt file3.txt >>> list(names.generate_names(2)) ['file1.txt', 'file2.txt'] >>> g = names.generate_names(3) >>> next(g) 'file1.txt' >>> next(g) 'file2.txt' >>> next(g) 'file3.txt' >>> next(g) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration -- http://mail.python.org/mailman/listinfo/python-list