[Python-Dev] strop vs. string
M.-A. Lemburg
mal@lemburg.com
Thu, 24 May 2001 16:54:24 +0200
Greg Stein wrote:
>
> On Thu, May 24, 2001 at 12:18:50PM +0200, M.-A. Lemburg wrote:
> > Greg Stein wrote:
> >...
> > > So... my question is: is there any way that we can retain a generic find()
> > > (and similar functions from the string/strop module) that operates on any
> > > type that implements the buffer API?
> > >
> > > Maybe there is some way we can do a mixin for Python types? e.g. "this mixin
> > > implements some standard methods for 8-bit character data (using the buffer
> > > API), which can be mixed into new Python types" That would reduce the burden
> > > for new types.
> >
> > I suppose that in 2.2 we'll be able to build a class/type
> > hierarchy which then provides these possibilities. I haven't
> > followed Guido's latest checkins closely though -- could be that
> > types don't support multiple inheritence.
>
> No idea either... that's why I asked.
>
> > BTW, wouldn't it suffice to add these methods to buffer objects ?
> > Then you could write: buffer(ob).find('.').
>
> You're totally missing the point with that suggestion. It does *not* suffice
> to add them to buffer objects. What about array objects? mmap objects?
> Random Joe Object who implements the buffer interface?
That's the point: you can wrap all those into a buffer object
and then use the buffer object methods to manipulate them. In
that sense, buffer objects provide an adaptor to the underlying
object which implements the needed methods.
> All of those are out of luck.
>
> With strop, I can pass any of those objects to strop.find(). That function
> has a polymorphic argument.
>
> In the current arrangement, every object must implement their own .find and
> .upper and .whatever.
>
> Cheers,
> -g
>
> --
> Greg Stein, http://www.lyra.org/
--
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Company & Consulting: http://www.egenix.com/
Python Software: http://www.lemburg.com/python/