On Wednesday 07 May 2008 03:19:30 pm Daniel Marcel Eichler wrote: > Am Dienstag 06 Mai 2008 16:07:01 schrieb Mike Driscoll: > > Well, no. It's a litte different. Interfaces force to implement methods. > Simple inheritance with method-stubs can't garantee that a specific > method is reimplementat in a sub-class. Interfaces work at > compile-time, while method-stubs raise at their first call, so in worst > case, never (when the developer is available).
<Pseudo-java code> class MyClass implements MyInterfaceWithPassMethod { function Pass() { } } </pseudo-java code> There you have it, interfaces are not enough to ensure that the implementors actually implement the methods. They are useful for warning at compile time if there is a missing method, but nothing more. I believe you could achieve a very similar warning in python using some kind of Interface metaclass (too lazy right now to hack a proof of concept, but it looks doable). I actually like the Interface concept... as portrayed by zope.Interfaces and pyprotocols (not the same thing, but I like them), and the ABCs (these, not so much). But Java interfaces are barely a replacement for multiple inheritance+abstract methods. > That's the point. Interfaces garantee that a duck is a duck, an not only > a chicken that quack. Not really. (See the NotImplementedExceptions in .NET 1.1 and window forms, and/or their TabbedControl/TabPage background color attribute. Can't find them now, as I don't have .NET anymore, but I consider that an example of why the static typing are... overrated) -- Luis Zarrabeitia (aka Kyrie) Fac. de Matemática y Computación, UH. http://profesores.matcom.uh.cu/~kyrie -- http://mail.python.org/mailman/listinfo/python-list