[Python-Dev] [python] Should we do away with unbound methods in Py3k? (original) (raw)
Thomas Lee tom at vector-seven.com
Thu Nov 22 01:07:12 CET 2007
- Previous message: [Python-Dev] [python] Should we do away with unbound methods in Py3k?
- Next message: [Python-Dev] [python] Should we do away with unbound methods in Py3k?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Michael Foord wrote:
Guido van Rossum wrote:
I'm asking a Py3k question on python-dev because I'd like to have opinions from people who haven't thought about Py3k much yet. Consider the following example:
class C: def foo(self): pass C.foo(42) This currently fails with this error message: TypeError: unbound method foo() must be called with C instance as first argument (got int instance instead) This message is called when isinstance(self, C) returns False, where self is the first argument passed to the unbound method. That's nice, but there is a cost associated with this: the expression "C.foo" can't just return the function object "foo", it has to wrap it in an unbound method object. In Py3k the cost of calling an unbound method object goes up, because the isinstance() check may be overloaded. This typically happens when the class C uses the special metaclass (abc.ABCMeta) used for virtual inheritance (see PEP 3119). in Py3k the I/O stream classes are perhaps the most common use case. Given that the error is of limited value and that otherwise the unbound method behaves exactly the same as the original function object, I'd like to see if there are strenuous objections against dropping unbound method objects altogether (or at least not using them in this case), so that explicit super calls (via the unbound method) may go a little faster. Also, it would make it easier to fix this issue: http://bugs.python.org/issue1109
On occasions I've found it a drag that you can't call unbound methods with a different type. Python normally allows duck typing and this is one place it actually places type restrictions... I'd be happy to see this restriction go. :-) Michael Foord
Python-Dev mailing list Python-Dev at python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/krumms%40gmail.com +1 to getting rid of unbound methods!
- Previous message: [Python-Dev] [python] Should we do away with unbound methods in Py3k?
- Next message: [Python-Dev] [python] Should we do away with unbound methods in Py3k?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]