> == CONCLUSION / WRAP-UP > > So, now that I have sufficiently bored you all to tears, I will do a > quick re-cap of the main question, and the possible solutions. > > Should metaclasses be "inherited" along normal class lines? > > Meaning that if Foo uses a custom metaclass, and Bar isa Foo, then > Bar also uses that metaclass. > > If we say yes, then I think it is clear that in order to get a sane > method and predictable resolution order the custom metaclass would > always need to precede the inherited eigenclass in the superclass > list. (see the last example above). > > If we say no, then we need to introduce another anyonomous class into > our mix, which we call an 'x' class. The 'x' class would need to use > a breath-first dispatch order in order to produce a sane and > predictable method resolution order.
I would like to expand on my position in the discussion Steve and I had, which is the "no" position. The crux of my view is that Foo is an instance of some custom metaclass. Bar is an instance of Class (for the sake of argument). Foo and Bar are unrelated, save for the fact that instances created by Bar's new() function will have access to all the behaviors and state that instances created by Foo's new() function will have. This is why I also feel that class methods shouldn't have the same MRO as instance methods, but that's a moot discussion. Rob