[Python-3000] Removing 'self' from method definitions
Jim Jewett
jimjjewett at gmail.com
Thu Apr 13 20:54:11 CEST 2006
(Cc to python dev, as my question is really about 2.x)
On 4/13/06, Ian Bicking <ianb at colorstudy.com> wrote:
> ... the self in the signature (and the miscount of arguments
> in TypeError exceptions) ...
Even in the 2.x line, the TypeError messages should be improved.
>>> # No syntax errors when creating m()
>>> class C:
def m(): pass
but the method can't actually be called, and won't quite say why.
>>> # This message is good
>>> C.m()
Traceback (most recent call last):
File "<pyshell#101>", line 1, in -toplevel-
C.m()
TypeError: unbound method m() must be called with C instance as
first argument (got nothing instead)
but the obvious fix of using an instance is just confusing
>>> C().m()
Traceback (most recent call last):
File "<pyshell#102>", line 1, in -toplevel-
C().m()
TypeError: m() takes no arguments (1 given)
Could it at least say something like "(1 given, including self)"? I
suppose the argument might be named something other than self,
particularly in C code, but ... that strikes me as a smaller problem
than the mysteriously appearing invisible argument.
-jJ
More information about the Python-3000
mailing list