This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author christian.heimes
Recipients christian.heimes, georg.brandl, gvanrossum
Date 2007-11-27.10:37:05
SpamBayes Score 0.00019496688
Marked as misclassified No
Message-id <474BF344.9060601@cheimes.de>
In-reply-to <1196103842.79.0.269157789666.issue1497@psf.upfronthosting.co.za>
Content
Guido van Rossum wrote:
> - Please clean up the comment in classobject.c starting with "Method
> objects are used for one purposes:" -- to begin with, "one purposes" is
> ungrammatical.  Best to remove the (a) bullet and rephrase the whole
> thing more like "Method objects are used for bound instance methods (...)"

Done

> - The error "unbound methods are not supported" sounds a bit strange;
> better rephrase more positive as "self must not be None"

Done. Didn't I say that I'm not good with short, precise error messages? :)

> - There is still a comment left "No, it is an unbound method". Is this
> code still reachable? I though all ways to set im_self to NULL/None are
> blocked?

It's not longer reachable but I left it there to catch problems. It's
gone now.

> 
> - Is bug 1202533 still worth testing for in test_descr.py?  I don't know
> that using a lambda reproduces the error condition that once existed.

Removed

> - Do we really need im_class for anything any more?  ISTM that the one
> place where it is still used (in method_repr), we could as well use the
> class of im_self.  (And before you think of super() as a
> counter-argument: super() passes the object's class in rather than the
> class where the method is found (though this may be considered a bug).

You are right. im_class can be substituted with __self__.__class__. I've
also removed the class argument from PyMethod_New(). It's not required
anymore.

> - I think that, like func_code -> __code__, the im_xxx attributes should
> be renamed __xxx__.

Done
im_func -> __func__
im_self -> __self__
im_class -> removed

I've left the names in the struct untouched.

> The 'new' module claims to exist solely for backwards compatibility.  If
> that's true, why are we adding to it?  In any case, the
> _BoundCFunction() class is redundant -- you can just use the "method"
> type, which is easily accessed as any bound method's __class__
> attribute.  And is there a use case for an *unbound* C function? If not,
> you could replace boundcfunction() with just a call to the method type.

How could a bind a builtin method to a class so that
instance().builtin() gets self as first argument? In one unit test the
builtin function id() is bound to a class:

class Example:
    id = somemagic(id)

Example().id() results in id(Example())

I can't get the same effect with MethodType because it binds only to
instances, not to classes.

Christian
History
Date User Action Args
2007-11-27 10:37:06christian.heimessetspambayes_score: 0.000194967 -> 0.00019496688
recipients: + christian.heimes, gvanrossum, georg.brandl
2007-11-27 10:37:06christian.heimeslinkissue1497 messages
2007-11-27 10:37:05christian.heimescreate