Message57868
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 |
|
Date |
User |
Action |
Args |
2007-11-27 10:37:06 | christian.heimes | set | spambayes_score: 0.000194967 -> 0.00019496688 recipients:
+ christian.heimes, gvanrossum, georg.brandl |
2007-11-27 10:37:06 | christian.heimes | link | issue1497 messages |
2007-11-27 10:37:05 | christian.heimes | create | |
|