class ForceSensitive: capacites_base = ["soulever des objets"] def __init__(self, nom, capacites=[]): self.nom = nom self.capacites = self.capacites_base + capacites def __str__(self): return "Je suis {nom} et je peux :\n - {capacites}\n".format(nom=self.nom, capacites="\n - ".join(self.capacites)) class Jedi(ForceSensitive): capacites_base = ["soulever des objets", "combattre au sabre laser", "influencer les esprits"] class JediBadass(ForceSensitive): capacites_base = ["soulever des objets", "combattre au sabre laser", "influencer les esprits", "réapparaître comme fantôme"] class Sith(ForceSensitive): capacites_base = ["soulever des objets", "combattre au sabre laser", "envoyer des éclairs"] leia = ForceSensitive("Leia Organa Solo", ["jouer à Mary Poppins"]) rey = Jedi("Rey", ["à peu près tout faire en fait"]) luke = Jedi("Luke Skywalker", ["projeter un hologramme", "entrer en lévitation"]) obiwan = JediBadass("Obiwan Kenobi", ["balancer des punchlines de ouf"]) empereur = Sith("L'Empereur", ["dissimuler la Force", "manipuler et trahir"]) snoke = ForceSensitive("Leader Suprême Snoke", ["envoyer des éclairs", "skyper par télépathie"]) for personnage in [leia, rey, luke, obiwan, empereur, snoke]: print(personnage)