O que é um mixin e por que eles são úteis?

Em "Programação Python ", Mark Lutz menciona" mixins ". Tenho experiência em C / C ++ / C # e não ouvi o termo antes. O que é um mixin?

Lendo nas entrelinhas deeste exemplo (ao qual me vinculei porque é bastante longo), presumo que seja um caso de usar herança múltipla para estender uma classe em oposição à subclasse 'adequada'. Isto está certo

Por que eu gostaria de fazer isso em vez de colocar a nova funcionalidade em uma subclasse? Por esse motivo, por que uma abordagem de mixin / herança múltipla seria melhor do que usar composição?

O que separa um mixin da herança múltipla? É apenas uma questão de semântica?

questionAnswers(15)

yourAnswerToTheQuestion