Java abstract/interface design in Python
I'm not that familiar with Python, but I would hazard a guess that it doesn't.
The reason why interfaces exist in Java is that they specify a contract.  Something that implements java.util.List, for example, is guaranteed to have an add() method to conforms to the general behaviour as defined on the interface.  You could drop in any (sane) implementation of List without knowing its specific class, call a sequence of methods defined on the interface and get the same general behaviour.
Moreover, both the developer and compiler can know that such a method exists and is callable on the object in question, even if they don't know its exact class.  It's a form of polymorphism that's needed with static typing to allow different implementation classes yet still know that they're all legal.
This doesn't really make sense in Python, because it's not statically typed.  You don't need to declare the class of an object, nor convince the compiler that methods you're calling on it definitely exist.  "Interfaces" in a duck-typing world are as simple as invoking the method and trusting that the object can handle that message appropriately.
Note - edits from more knowledgeable Pythonistas are welcome.
I have a number of classes which all share the same methods, only with different implementations. In Java, it would make sense to have each of these classes implement an interface or extend an abstract class. Does Python have anything similar to this, or should I be taking an alternative approach?