On Sep 9, 4:37 pm, The Music Guy <music...@alphaios.net> wrote: > On Wed, Sep 9, 2009 at 1:21 PM, Carl Banks<pavlovevide...@gmail.com> wrote: > > On Sep 8, 10:47 pm, The Music Guy <music...@alphaios.net> wrote: > > What is get_other_base? Just use a regular super call here, > > get_other_base and hacks like that are what gets you into trouble. > > > You seem to be overthinking this. You don't need to. Just use super > > () in MyMixin, and in all the other classes, consistently, and mind > > the order of the bases. > > > And if I were you I wouldn't keep making updates to a "current > > example" because first you do questionable things define a > > get_other_base method, then you try to apply my advice without > > reverting to the original form you posted. Well of course you're > > going to have issues if you do that. Instead, start from scratch, and > > try to get a small example working, using your orginial post and my > > original suggestion. Once that works then try to apply it to your > > working example. > > get_other_base() is supposed to return the other superclass (base) > that is being used in conjunction with the current superclass. So if > FooX inherits from MyMixin and BaseB, and get_other_base(self) is > called from a method defined in MyMixin, BaseB is returned. In any > case, that function is merely psuedocode, not an actual part of the > implementation.
Ah, but see unless you tell us that, we will not know and will give you inappropriate advice. Moral of the story: post the code that you actually ran. And if you take anyone's advice, apply it to the actual code they were advising you on. > Its purpose in my example was merely to show the > effect I was trying to acheive. I used it because I'm having trouble > understanding exactly how the super() function works; it always seems > to do something I didn't expect, or not do something that I did > expect. (I say this after having read the online documentation, btw.) super() is unfortunately misnamed after the analogous feature of Java; the analogy breaks down under multiple inheritance. Think of super as more like "call next method", where the next method could be from a base class or a sister class. However it always works left to right in the list of bases, which is why it was important for MyMixin to be listed first. > Anyway, Ryles' last suggestion helped a lot. Thanks, Ryles. (And Carl > and Scott, too, of course.) Here's the code I'm going with: I'm glad it worked out. Carl Banks -- http://mail.python.org/mailman/listinfo/python-list