[Python-Dev] Reasons behind misleading TypeError message when passing the wrong number of arguments to a method (original) (raw)

Giampaolo Rodolà g.rodola at gmail.com
Thu May 20 11:49:02 CEST 2010


2010/5/20 John Arbash Meinel <john.arbash.meinel at gmail.com>:

Giampaolo Rodolà wrote:

class A: ...     def echo(self, x): ...             return x ... a = A() a.echo() Traceback (most recent call last): File "", line 1, in TypeError: echo() takes exactly 2 arguments (1 given) I bet my last 2 cents this has already been raised in past but I want to give it a try and revamp the subject anyway. Is there a reason why the error shouldn't be adjusted to state that 1 argument is actually required instead of 2? Because you wouldn't want to have A.echo() Say that it takes 1 argument and (-1 given) ? John =:->

I see that as a different error type: what you're doing there is calling a method of a class which you haven't instantiated in the first place. Actually the error message returned in this other case is not very clear as well:

"unbound method echo() must be called with A instance as first argument (got nothing instead)"

It talks about "arguments" while no arguments are actually involved in the problem: just a class I forgot to initialize.

--- Giampaolo http://code.google.com/p/pyftpdlib http://code.google.com/p/psutil



More information about the Python-Dev mailing list