[Python-Dev] PEP 246, redux

Alex Martelli aleax at aleax.it
Thu Jan 13 22:59:53 CET 2005


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



More information about the Python-Dev mailing list