D. Guandalino wrote:
class C(object):
... def __init__(self):
... pass
...
C(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() takes exactly 1 argument (2 given)
I'm having hard times understanding why a TypeError is raised here.
Could you explain?
Because it is an error involving a type (class). Type C doesn't take any
arguments. You gave it an argument. Therefore, it's an error regarding a
type, hence, a TypeError.
If you feel that this is a fairly dubious line of reasoning, I agree
with you! I think that such failures would be best given their own
dedicated exception for "wrong number of arguments". But they don't:
>>> import math
>>> math.sin(1.1, 2.2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sin() takes exactly 1 argument (2 given)
No types involved here, math.sin is just a function.
Oh well.
--
Steven
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor