[Python-Dev] PEP 246, redux
Alex Martelli
aleax at aleax.it
Thu Jan 13 22:59:53 CET 2005
More information about the Python-Dev mailing list
Thu Jan 13 22:59:53 CET 2005
- Previous message: [Python-Dev] PEP 246, redux
- Next message: [Python-Dev] PEP 246: lossless and stateless
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 2005 Jan 13, at 22:43, Paramjit Oberoi wrote: > On Thu, 13 Jan 2005 20:40:56 +0100, Alex Martelli <aleax at aleax.it> > wrote: >> >> So please explain what's imperfect in wrapping a str into a StringIO? > > If I understand Philip's argument correctly, the problem is this: > > def print_next_line(f: file): > print f.readline() > > s = "line 1\n" "line 2" > > print_next_line(s) > print_next_line(s) > > This will print "line 1" twice. Ah! A very clear example, thanks. Essentially equivalent to saying that adapting a list to an iterator ``rewinds'' each time the ``adaptation'' is performed, if one mistakenly thinks of iter(L) as providing an _adapter_: def print_next_item(it: iterator): print it.next() L = ['item 1', 'item 2'] print_next_item(L) print_next_item(L) Funny that the problem was obvious to me for the list->iterator issue and yet I was so oblivious to it for the str->readablefile one. OK, this does show that (at least some) classical cases of Adapter Design Pattern are unsuitable for implicit adaptation (in a language with mutation -- much like, say, a square IS-A rectangle if a language does not allow mutation, but isn't if the language DOES allow it). Thanks! Alex
- Previous message: [Python-Dev] PEP 246, redux
- Next message: [Python-Dev] PEP 246: lossless and stateless
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list