Also, for something like this:

In [1]: class A:
   ...:     pass
   ...:

In [2]: A(x=2)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-857108bff989> in <module>()
----> 1 A(x=2)

TypeError: object() takes no parameters

It would be nice to say TypeError: object() takes no parameters, but 
keyword argument "x" given.  I understand that the value of "x" might not 
have a __repr__ method, but the key name has to be string, so this should 
be easily doable at least for extra keyword arguments?  For positional 
arguments, maybe just print how many were passed to object?  Knowing the 
key name would have helped me with debugging.   Usually, I print(kwargs) 
somewhere up the inheritance chain and run my program again.

On Tuesday, October 25, 2016 at 3:19:57 AM UTC-4, Neil Girdhar wrote:
>
> I was thinking of posting something like the first suggestion myself. 
>  Both would be a great additions.
>
> On Monday, October 24, 2016 at 6:10:52 PM UTC-4, Ryan Gonzalez wrote:
>>
>> I personally find it kind of annoying when you have code like this:
>>
>>
>> x = A(1, B(2, 3))
>>
>>
>> and Python's error message looks like this:
>>
>>
>> TypeError: __init__() takes 1 positional argument but 2 were given
>>
>>
>> It doesn't give much of a clue to which `__init__` is being called. At 
>> all.
>>
>> The idea: when showing the function name in an error like this, show the 
>> fully qualified name, like:
>>
>>
>> TypeError: A.__init__() takes 1 positional argument but 2 were given
>>
>>
>> This would be MUCH more helpful!
>>
>>
>> Another related change would be to do the same thing in tracebacks:
>>
>>
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in <module>
>>   File "<stdin>", line 2, in __init__
>> AssertionError
>>
>>
>> to:
>>
>>
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in <module>
>>   File "<stdin>", line 2, in MyClass.__init__
>> AssertionError
>>
>>
>> which could make it easier to find where exactly an error originated.
>>
>> -- 
>> Ryan (ライアン)
>> [ERROR]: Your autotools build scripts are 200 lines longer than your 
>> program. Something’s wrong.
>> http://kirbyfan64.github.io/
>>  
>>
>
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to