A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://mail.python.org/pipermail/python-dev/2002-September/028962.html below:

[Python-Dev] Keyword for first argument of methods?

[Python-Dev] Keyword for first argument of methods?Guido van Rossum guido@python.org
Fri, 27 Sep 2002 11:32:57 -0400
> When implementing keyword argument support for Boost.Python, I
> noticed the following. I'm sure it's not worth a lot of effort to
> change this behavior, but I thought someone might like to know:
> 
> >>> class X:
> ...     def foo(self, y): print y
> ...
> >>> X.foo(y = 1, self = X())
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> TypeError: unbound method foo() must be called with X instance as first
> argument (got nothing instead)

You can't pass in self to an unbound method as a keyword argument --
it has to be the first positional argument.  The unbound method
__call__ implementation contains a check that ensures that the 'self'
argument is an instance of the class, but when this check is made, it
cannot assume that the 'self' argument is actually called 'self' --
that's only a naming convention.  It also doesn't know (in general)
the name of the first argument to the underlying function, since the
function can be an arbitrary callable -- there's no standard
introspection interface for callables to find out the argument names.

As you said, I see no reason to try to work harder in the case that
the underlying callable supports introspection using
obj.func_code.co_{argcount,varnames}.

--Guido van Rossum (home page: http://www.python.org/~guido/)



RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4