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

David Abrahams dave@boost-consulting.com
Fri, 27 Sep 2002 11:01:54 -0400


From: "Andrew Koenig" <ark@research.att.com>


> Dave> When implementing keyword argument support for Boost.Python, I
noticed the
> Dave> following. I'm sure it's not worth a lot of effort to change this
behavior,
> Dave> but I thought someone might like to know:
>
> Dave> class X:
> Dave> ...     def foo(self, y): print y
> Dave> ...
> Dave> X.foo(y = 1, self = X())
> Dave> Traceback (most recent call last):
> Dave>   File "<stdin>", line 1, in ?
> Dave> TypeError: unbound method foo() must be called with X instance as
first
> Dave> argument (got nothing instead)
>
> Perhaps more interesting:
>
>         >>> X.foo(X(), 1)
>         1
>         >>> X.foo(self = X(), y = 1)
>         TypeError: unbound method foo() must be called with X instance as
first argument (got nothing instead)

Given my post, that behavior falls out of the (nicely documented) rules for
how functions are called, so it's unsurprising if you read the docs. I
wonder if that makes any difference in the real world ;-)


-----------------------------------------------------------
           David Abrahams * Boost Consulting
dave@boost-consulting.com * http://www.boost-consulting.com