<jupyter_start><jupyter_text>[![pythonista.io](imagenes/pythonista.png)](https://pythonista.io)  Mixins. Los mixins son una coleccion de clases que contienen métodos, los cuales pueden ser intercambiables. Aprovechan la herencia múltiple para conformar clases modulares.Por lo general estas clases contienen métodos que corresponden a bibliotecas que no sobrescriben a las otras superclases.El uso de mixins es muy controvertido e incluso algunos lo consideran un "antipatrón", pero aún así es aceptable en Python.<jupyter_code>class AutoRobot:
    
    def conversion(self):
        return 'Soy un felino.'
class LeonNegro(AutoRobot):
    
    def opera_cabeza(self):
        return 'Jeje. Soy el más importante'
class LeonRojo(AutoRobot):
    
    def opera_brazo_derecho(self):
        return 'Operando brazo derecho'
class LeonVerde(AutoRobot):
    
    def opera_brazo_izquierdo(self):
        return 'Operando brazo izquierdo'
class LeonAzul(AutoRobot):
    
    def opera_pierna_derecha(self):
        return 'Operando pierna derecha.'
class LeonAmarillo(AutoRobot):
    
    def opera_pierna_izquierda(self):
        return 'Quería ser la cabeza.'
class Voltron(LeonNegro, LeonRojo, LeonAzul, LeonVerde, LeonAmarillo):
    pass
help(Voltron)
ensamblar = Voltron()
ensamblar.conversion()
ensamblar.opera_pierna_izquierda()
ensamblar.opera_brazo_izquierdo()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.07609475951184494, 'fraction_numerical': 0.0, 'mean_word_length': 4.553784860557769, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '500787', 'license': 'MIT', 'n_tokens_mistral': 488, 'n_tokens_neox': 476, 'n_words': 125, 'path': '09_mixins.ipynb', 'repo_name': 'PythonistaMX/py111', 'size': '1393'}