Greg, > Do you have a real-life example of this where multiple > inheritance is actually used? I have built a framework that I have called the "capability pattern" which uses multiple inheritance in a way that might be unique (I'm not familiar enough with other frameworks to know for sure). There are two classes, a Collector and a Capability. The result of calling a function of the collector is a list of results of calling the functions of the bound capabilities. For example, these three are capability classes: class X(Capability): def f(self): return 'X.f' class Y(Capability): def g(self): return 'Y.g' class Z(Capability): def f(self): return 'Z.f' def g(self): return 'Z.g' Now to create a sample collector: class A(Collector, X, Y, Z): pass Calling A().f() returns ['X.f', 'Z.f']. I use this pattern in a web application. The do_GET call is mapped into do_SHOW, and each 'capability' can return something from its do_SHOW (usually a <div> element) and the results are sent back to the user. In my case I have lots of combinations of capabilities that can be mixed together. I decided to use multiple inheritance over other patterns because I wanted to leverage isinstance(obj,Y) to indicate that some object has some capability, and not having to duplicate the method resolution order code for other kinds of methods is really nice. > A non-contrived example or two would be a good thing to > have in tutorials etc. where super() is discussed. It > would help to convey the kinds of situations in which > use of super() is and is not appropriate. So this is a collection of cooperative classes, and super() isn't used. Joel
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4