Hello,
I noticed an inconsistency in the error messages for the number of
arguments to a method call. For Python methods, the "self" argument is
counted. For built-in methods, the "self" argument is *not* counted:
>>> class mylist(list):
... def append(self, val): super().append(val)
>>> f = list().append
>>> f(1,2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: append() takes exactly one argument (2 given)
>>> g = mylist().append
>>> g(1,2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: append() takes 2 positional arguments but 3 were given
I think it has been argued before that it's a feature that self is
counted. So I consider the error message for list().append a bug. This
is one of the many oddities I noticed while working on improving
built-in functions.
Would you agree to change the error message for built-in methods to be
closer to Python methods?
Jeroen.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com