03-classes-starwars.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. class ForceSensitive:
  2. capacites_base = ["soulever des objets"]
  3. nb_instances = 0
  4. def __init__(self, nom, capacites=[]):
  5. self.nom = nom
  6. self.capacites = self.capacites_base + capacites
  7. ForceSensitive.nb_instances += 1
  8. def nb_capacites(self):
  9. return len(self.capacites)
  10. def __str__(self):
  11. return "Je suis {nom} ({genre}) et j'ai {nb} capacités :\n - {capacites}\n".format(
  12. nom=self.nom, genre=type(self).__name__, nb=self.nb_capacites(), capacites="\n - ".join(self.capacites)
  13. )
  14. class Jedi(ForceSensitive):
  15. capacites_base = [
  16. "soulever des objets",
  17. "combattre au sabre laser",
  18. "influencer les esprits"
  19. ]
  20. class JediBadass(ForceSensitive):
  21. capacites_base = [
  22. "soulever des objets",
  23. "combattre au sabre laser",
  24. "influencer les esprits",
  25. "réapparaître comme fantôme"
  26. ]
  27. class Sith(ForceSensitive):
  28. capacites_base = [
  29. "soulever des objets",
  30. "combattre au sabre laser",
  31. "envoyer des éclairs"
  32. ]
  33. leia = ForceSensitive("Leia", ["jouer à Mary Poppins"])
  34. rey = Jedi("Rey", ["à peu près tout faire en fait"])
  35. luke = Jedi("Luke", ["lancer un sabre avec classe", "entrer en lévitation"])
  36. obiwan = JediBadass("Obiwan", ["balancer des punchlines de ouf"])
  37. empereur = Sith("L'Empereur", ["dissimuler la Force", "manipuler et trahir"])
  38. snoke = ForceSensitive("Snoke", [ "envoyer des éclairs", "troller mes subordonnés","skyper par télépathie"])
  39. print("\nIl y a {nb_force_sensitives} ForceSensitive en circulation.\n".format(
  40. nb_force_sensitives=ForceSensitive.nb_instances
  41. ))
  42. for personnage in [leia, rey, luke, obiwan, empereur, snoke]:
  43. print(personnage)