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