Serhiy Storchaka added the comment: It is not so easy to make an error message conforming with error messages for similar types. This may require changing error messages in other code.
First, "takes no arguments" instead of "takes no parameters". For normal __new__ and __init__ you never got "takes no arguments". They take at least one argument -- a class or an instance. >>> tuple.__new__(tuple, 1, 2, 3, 4) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: tuple expected at most 1 arguments, got 4 >>> list.__init__([], 1, 2, 3, 4) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: list expected at most 1 arguments, got 4 >>> class C: ... def __new__(cls): return object.__new__(cls) ... def __init__(self): pass ... >>> C.__new__(C, 1, 2, 3, 4) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: __new__() takes 1 positional argument but 5 were given >>> C.__init__(C(), 1, 2, 3, 4) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: __init__() takes 1 positional argument but 5 were given ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue31506> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com