On Thu, 13 Jan 2005 13:43:53 -0800, Paramjit Oberoi <[EMAIL PROTECTED]> wrote: > On Thu, 13 Jan 2005 20:40:56 +0100, Alex Martelli <[EMAIL PROTECTED]> 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.
Nice example! The real subtlety here is that f = adapt(s, StringIO) print_next_line(f) print_next_line(f) *does* work - the implication is that for the original example to work, adapt(s, StringIO) needs to not only return *a* wrapper, but to return *the same wrapper* every time. Which may well break *other* uses, which expect a "new" wrapper each time. But the other thing that this tends to make me believe even more strongly is that using Guido's type notation for adaptation is a bad thing. def print_next_line(f): ff = adapt(f, file) print ff.readline() Here, the explicit adaptation step in the definition of the function feels to me a little more obviously a "wrapping" operation which may reinitialise the adapter - and would raise warning bells in my mind if I thought of it in terms of a string->StringIO adapter. Add this to the inability to recover the original object (for readaptation, or passing on as an argument to another function), and I'm very concerned about Guido's type notation being used as an abbreviation for adaptation... Paul. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com