Python from Wise Guy's Viewpoint

Pascal Costanza costanza at web.de
Fri Oct 24 16:51:30 EDT 2003


Marshall Spight wrote:

>>In a decent dynamically typed language, you have proper name space
>>management, so that a method cannot ever be defined for a class only by
>>accident.
> 
> 
> How can a method be defined "by accident?" I can't figure out what
> you're trying to say.

class C {
   void m();
}

class D {
   void m();
}

...

void doSomething (Object o) {
   if (o instanceof C) {
     ((D)o).m();
   }
}

"Oops, by accident method m is also defined in D, although I wanted to 
call method m in C."

Doesn't happen in languages with proper name space management. (The 
problem is that Java gives you only the illusion of well-behaved 
namespaces.)

Pascal

P.S, before anyone repeats the same issue again: Yes, Java has a badly 
designed static type system. The example was not a very good one in the 
first place. Doesn't matter wrt to my essential message though.

-- 
Pascal Costanza               University of Bonn
mailto:costanza at web.de        Institute of Computer Science III
http://www.pascalcostanza.de  Römerstr. 164, D-53117 Bonn (Germany)





More information about the Python-list mailing list