[Python-3000] iostack, second revision

Talin talin at acm.org
Fri Sep 8 19:12:13 CEST 2006


Nick Coghlan wrote:
> Guido van Rossum wrote:
>> Maybe (since I fall in that category it doesn't bother me :-), but we
>> shouldn't replace them with symbolic constants. Having to import
>> another module to import names like SEEK_CUR and SEEK_END is not
>> Pythonic. Perhaps the seek() method can grow keyword arguments to
>> indicate the different types of seekage, or there should be three
>> separate methods.
> 
> As I mentioned in a different part of the thread, I believe seek(), seekby() 
> and rseek() would work as names for the 3 different method approach.
> 
> Cheers,
> Nick.
> 

One advantage of that approach is that layers which don't support a 
particular operation could omit one or more of those functions, or have 
differently-named functions that represent what the layer is capable of. 
For example, if a layer is only capable of seeking forward, you could 
use 'skip' like the Java stream does; If a layer can rewind the stream 
back to zero, but not to any intermediate position, you could have a 
'reset' method.

By taking this approach, you can come up with an API for a given layer 
that fits naturally into the behavior model of that layer, without 
trying to cram it into a generic model for seeking that attempts to 
cover all cases. For text streams, come up with a model that makes sense 
for what kinds of things you want to do with text, and don't try and 
make it look like the API for the underlying byte stream.

-- Talin


More information about the Python-3000 mailing list