[
Lists Home |
Date Index |
Thread Index
]
At 11:57 13/02/2003 +1300, Berend de Boer wrote:
> >>>>> "SMSean" == Sean McGrath <sean.mcgrath@propylon.com> writes:
>
> SMSean> Python:
>
> SMSean> x = 1 y = "Hello" y = y + x
>
> SMSean> TypeError: cannot concatenate 'str' and 'int'
> SMSean> objects
>
> SMSean> So Python is dynamically typed. i.e. at runtime. Not
> SMSean> weakly typed. Just as Guido said and not what you said.
>
>In this particular context, does this error message not mean: I didn't
>find a concatenate method in the 'str' class that has an 'int' as
>argument? So that's not exactly about typing IMO.
>
>Coercion would be that either x or y would be coerced into the other
>type before performing the operation. That would depend on the
>operator (i.e. '+' would determine this rule).
Right. If Python knows of a harmless coercion it can perform it. You only
get the run-time typing error if Python knows of no sane automatic
conversion to make the types of the operands compatible.
In Python I can say
x = atoi("42") and get back an object of type integer with the value
42.
I cannot, and would not want to say:
x = (ItsAnIntegerDammit)"42"
as that basically would be forcing the system to do something that the system
knows is very dodgy and likely to generate smoke.
If the latter is weak typing then its just a source of bugs - like (void *)
casting
in C or those wonderful autoconversions that PL/1 used to get up to:-)
It always amuses me to see developers using languages like Java spend so much
time typing their variables/objects at declare time, only to spend the same
amount of time
telling the system what type they are when they come out of hash tables
and so on.
regards,
Sean
|