[pypy-dev] improve error message when missing 'self' in method definition

Ryan Gonzalez rymg19 at gmail.com
Tue Sep 27 14:33:08 EDT 2016


Have you considered bringing this up on python-ideas, too?

On Tue, Sep 27, 2016 at 12:19 PM, Carl Friedrich Bolz <cfbolz at gmx.de> wrote:

> Hi all,
>
> I read this paper today about common mistakes that Python beginners
> make:
>
> https://www.researchgate.net/publication/307088989_Some_
> Trouble_with_Transparency_An_Analysis_of_Student_Errors_
> with_Object-oriented_Python
>
> The most common one by far is forgetting the "self" parameter in the
> method definition (which also still happens to me regularly). The error
> message is not particularly enlightening, if you don't quite understand
> the explicit self in Python.
>
>
> So I wonder whether we should print a better error message, something
> like this:
>
> $ cat m.py
> class A(object):
>     def f(x):
>         return self.x
> A().f(1)
>
> $ pypy m.py
> Traceback (application-level):
>   File "m.py", line 4 in <module>
>     A().f(1)
> TypeError: f() takes exactly 1 argument (2 given). Did you forget 'self'
> in the function definition?
>
>
> It's a bit the question how clever we would like this to be to reduce
> false positives, see the attached patch for a very simple approach.
>
> Anyone have opinions?
>
> Cheers,
>
> Carl Friedrich
>
> _______________________________________________
> pypy-dev mailing list
> pypy-dev at python.org
> https://mail.python.org/mailman/listinfo/pypy-dev
>
>


-- 
Ryan
[ERROR]: Your autotools build scripts are 200 lines longer than your
program. Something’s wrong.
http://kirbyfan64.github.io/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pypy-dev/attachments/20160927/58650357/attachment.html>


More information about the pypy-dev mailing list