class Turbo(object): def turbo(self): return "VRRRRROUUUMMM" class Prix(object): def get_prix(self): raise NotImplementedError class Voiture(Prix, Turbo): def __init__(self, constructeur, vitesse_max=160): self.constructeur = constructeur self.vitesse_max = vitesse_max def roule(self): return "vroummm" def signaletique(self): return "constructeur : {0}, vitesse_max {1}".format(self.constructeur, self.vitesse_max) class DoDoche(Voiture): def get_prix(self): return "4000" def achete_voiture(voiture): if not hasattr(voiture, "get_prix"): raise TypeError("pas le bon type") return "prix de la voiture: {0} euros".format(voiture.get_prix())