[Python-3000] removing functions from string module
Josiah Carlson
jcarlson at uci.edu
Wed Apr 18 06:41:49 CEST 2007
"Steven Bethard" <steven.bethard at gmail.com> wrote:
> On 4/17/07, Josiah Carlson <jcarlson at uci.edu> wrote:
> > Christian Heimes <lists at cheimes.de> wrote:
> > > Neal Norwitz schrieb:
> > > > I'm tempted to ask the same thing about the types module.
> > >
> > > Don't forget the 'new' module. It's a candidate for 'svn rm'.
> > >
> > > """Create new objects of various types. Deprecated.
> > >
> > > This module is no longer required except for backward compatibility.
> > > Objects of most types can now be created by calling the type object.
> > > """
> >
> > I would generally agree with you, except that when monkey patching
> > instances...
> > self.method = new.instancemethod(other.method.im_func,
> > self,
> > self.__class__)
>
> Yes, but you could just as easily write this as::
>
> self.method = other.method.im_func.__get__(self)
>
> which I'd contend is better than the original new.instancemethod version.
It is certainly easier to read, but I don't believe it is as
self-documenting as the new.instancemethod variant. What do you get
when calling 'new.instancemethod'? A new instance method.
Is func.__get__ documented anywhere? I've never seen it before (which
is why I use new).
Christian Heimes <lists at cheimes.de> wrote:
> I strongly emphasize on "a bit more". One needs a lot of inside
> knowledge about internal representation to rebind a method to another
> instance. The following idea is much easier to understand:
>
> self.method = boundmethod(self, method_or_function)
I agree that the above is easier to understand, but boundmethod is not a
builtin in 2.3, 2.4, or 2.5. Even with my own use-case of monkey
patching instances with functions or methods, I would resist its
inclusion as a builtin.
- Josiah
More information about the Python-3000
mailing list