A Standard
Andrew Koenig
ark at research.att.com
Sun May 25 23:12:52 EDT 2003
Erik> It seems to me that such abstraction layers are already inherent in
Erik> Python, due to Python's dynamicism. The documentation talks about
Erik> "sequence types" and "mapping types," acknowledging full well that these
Erik> describe _interfaces_ that non-builtin types can emulate and replace
Erik> builtin types whenever a sequence object, rather than a specific type
Erik> (e.g., tuple or list), is required.
Erik> To implement an object that implements the sequence interface, just
Erik> create a class that has a __getitem__ method which returns meaningful
Erik> values for 0 .. n - 1, and thereafter returns IndexError (there are of
Erik> course further elaborations on the interface which can be used, which
Erik> will).
What I see in this description is that the Python notion of "sequence types"
is decidedly non-sequential, because __getitem__ really takes an arbitrary
index as input. So what Python calls a "sequence type" is closest to the
C++ notion of a random-access iterator, except that you cannot offset
such an iterator by an integer to obtain a new iterator.
Such differences can have surprisingly profound effects on programs.
--
Andrew Koenig, ark at research.att.com, http://www.research.att.com/info/ark
More information about the Python-list
mailing list