Переглянути джерело

Formattage et ajout prop. statique

Benoît Hubert 7 роки тому
батько
коміт
823d161f75
1 змінених файлів з 31 додано та 8 видалено
  1. 31 8
      examples/03-classes-starwars.py

+ 31 - 8
examples/03-classes-starwars.py

@@ -1,28 +1,51 @@
 class ForceSensitive:
     capacites_base = ["soulever des objets"]
+    nb_instances = 0
 
     def __init__(self, nom, capacites=[]):
         self.nom = nom
         self.capacites = self.capacites_base + capacites
+        ForceSensitive.nb_instances += 1
+
+    def nb_capacites(self):
+        return len(self.capacites)
 
     def __str__(self):
-        return "Je suis {nom} et je peux :\n  - {capacites}\n".format(nom=self.nom, capacites="\n  - ".join(self.capacites))
+        return "Je suis {nom} ({genre}) et j'ai {nb} capacités :\n  - {capacites}\n".format(
+            nom=self.nom, genre=type(self).__name__, nb=self.nb_capacites(), capacites="\n  - ".join(self.capacites)
+        )
 
 class Jedi(ForceSensitive):
-    capacites_base = ["soulever des objets", "combattre au sabre laser", "influencer les esprits"]
+    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"]
+    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"]
+    capacites_base = [
+        "soulever des objets",
+        "combattre au sabre laser",
+        "envoyer des éclairs"
+    ]
 
-leia = ForceSensitive("Leia Organa Solo", ["jouer à Mary Poppins"])
+leia = ForceSensitive("Leia", ["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"])
+luke = Jedi("Luke", ["lancer un sabre avec classe", "entrer en lévitation"])
+obiwan = JediBadass("Obiwan", ["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"])
+snoke = ForceSensitive("Snoke", [ "envoyer des éclairs", "troller mes subordonnés","skyper par télépathie"])
 
+print("\nIl y a {nb_force_sensitives} ForceSensitive en circulation.\n".format(
+    nb_force_sensitives=ForceSensitive.nb_instances
+))
 for personnage in [leia, rey, luke, obiwan, empereur, snoke]:
     print(personnage)