OO in Python? ^^

bonono at gmail.com bonono at gmail.com
Sun Dec 11 11:30:38 EST 2005


Steven D'Aprano wrote:
> On Sun, 11 Dec 2005 07:10:27 -0800, bonono wrote:
>
> >
> > Steven D'Aprano wrote:
> >> > And I don't think Haskell make the programmer do a lot of work(just
> >> > because of its static type checking at compile time).
> >>
> >> I could be wrong, but I think Haskell is *strongly* typed (just like
> >> Python), not *statically* typed. At least the "What Is Haskell?" page at
> >> haskell.org describes the language as strongly typed, non-strict, and
> >> allowing polymorphic typing.
> >>
> > What is your definition of statically typed ? The non-strict as far as
> > I know is not referring to type checking. It does check type at compile
> > time though it is quite different from language like C, Java, the
> > polymorphic typing.
>
> Strongly typed means that objects have a type. All objects in Python have
> a type.
>
> Strongly typed languages like Python forbid you from performing operations
> on mismatched types, e.g. 1 + "1" does not work. In order to perform
> operations on mismatched types, you must explicitly perform a conversion,
> e.g. 1 + int("1").
>
> Weakly typed languages do not prevent you performing operations on
> mismatched types, e.g. something like 1 + "1" is allowed in languages like
> Basic and Perl.

This much I know but it was not what we are talking about.

>
> Untyped languages do not have any type information at all -- everything
> is just bytes. The most obvious example is assembly language.
>
> It should be noted that strong and weak typing is a matter of degree:
> despite being mostly strongly typed, Python does do automatic coercion of
> ints and floats, and although it is (arguably) weakly typed, Perl won't
> allow you to treat scalars as arrays or vice versa.
>
> Dynamic typing means that variables can be dynamically set to objects of
> wildly different types. For Python, we would say that any name can be
> bound to any object of any type.
>
> Static typing is the opposite of dynamic typing. Once a variable or
> name is defined as a certain type (either by a declaration, or
> implicitly the first time it is used), it can only be assigned to values
> of that same type.
>
> These two articles may be helpful:
>
> http://www.voidspace.org.uk/python/articles/duck_typing.shtml
> http://www.artima.com/forums/flat.jsp?forum=106&thread=7590
>
>
> A thoughtful defence of static typing is here:
>
> http://www.xoltar.org/misc/static_typing_eckel.html
>
> The fact that it is sub-titled "How Java/C++/C# Ruin Static Typing for the
> Rest of Us" should give some idea what it is about.
>
And you would see in the xoltar link that Haskell is a language of
static typing. You cannot call a function with parameters with
incompatible types which would be checked at compile time.




More information about the Python-list mailing list