On Fri, 14 Jan 2005, Chad Crabtree wrote:
> I have created a file-like object out of a triple quoted string. I was > wondering if there is a better way to implement readline than what I > have below? It just doesn't seem like a very good way to do this. > > class _macroString(object): > def __init__(self,s): > self.macro=s > self.list=self.macro.split("\n") > for n,v in enumerate(self.list): > self.list[n]=v+'\n' > def readline(self,n=[-1]): > n[0]+=1 > return self.list[n[0]] > def __str__(self): > return str(self.list) > def __len__(self): > return len(self.list) Using the default parameter 'n' in the readline() method isn't safe: all class instances will end up using the same 'n'. You may want to put the current line number as part of an instance's state, since two instances of a macroString should be able to keep track of their line positions independently. But that being said, there's already a module in the Standard Library that turns strings into file-like objects. Can you use StringIO.StringIO? Best of wishes to you! _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor