I'm trying to pick up Python for a project, and I'm a bit confused about how to use abstraction and classes. (I'm not a very experienced programmer, so apologies for the basic level of this question.) I come from a Java/Ocaml background, and what I've been trying to do is as follows: I have abstract classes for a graph and a graph advanced (a graph with some more fancy methods), that looks something like this
I then have an implementation of a graph:Code:class AbstractGraph: def method1(self): raise NotImplementedError ... class AbstractAdvanced: def method2(self): raise NotImplementedError ...
Now my question is: can I do something like this?Code:class Graph(AbstractGraph): def method1(self): * actual code *
In other words, how can I define the methods of Advanced abstractly in terms of the methods of AbstractGraph, and then somehow pass Graph into a constructor to get an instance of Advanced that uses Advanced's definitions with Graph's implementation?Code:class Advanced(AbstractAdvanced, AbstractGraph): def method2(self): *actual code, using the methods from AbstractGraph*
In terms of Ocaml, I'm trying to treat AbstractAdvanced and AbstractGraph as module types, but I've played around a little with python and I'm not sure how to get this to work.



Reply With Quote
