Bob Rea wrote: > On Sun June 28 2009 1:48 pm, Alan Gauld wrote: >> advantages to them over defining, say, a mixin > > Noob, here, wanted to know what a mixin is > eh, just getting back into learning python > googled it, still not sure what it is, but > wikipedia says the name come from ice cream mixins at > Steve's Ice Cream Parlor > > Ah yes, i was a frequenter there > > Will watch out for what it is when I get farther into python > may have to name them things like jimmies and > heath_bar_crunch >
In object-oriented programming languages, a mixin is a class that provides a certain functionality to be inherited by a subclass, while not meant for instantiation (the generating of objects of that class). Inheriting from a mixin is not a form of specialization but is rather a means of collecting functionality. A class may inherit most or all of its functionality from one or more mixins through multiple inheritance. -- http://en.wikipedia.org/wiki/Mixin In regular inheritance, you inherit from another class to inherit its interfaces. In mixin inheritance, you inherit for its implementations. The mixin concept takes it a bit further; the mixin class (parent class) may not be usable by itself (i.e. instantiating a mixin class may not make any sense) and must be inherited . Example: # Flavours class Vanilla(object): pass class Chocolate(object): pass # Additions class Nuts(object): pass class Cookies(object): pass # Items class IceCream(): pass # Usable classes class ChocolateIceCream(Chocolate, IceCream): pass class VanillaAndNutsIceCream(Vanilla, Nuts, IceCream): pass class ChocolateAndCookiesIceCream(Chocolate, Cookies, IceCream): pass Vanilla(), Chocolate(), Nuts(), and Cookies() are not meant to be instantiated directly; they are meant to be inherited. These classes are called mixin classes. In python's standard lib, an example of mixin class is threading.Thread() _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor