Utiliser des modules avec des classes

11.5 Utiliser des modules avec des classes

Objectifs d'apprentissage

À la fin de cette section, vous devriez être capable de :

  • Construire une instruction import qui importe sélectivement des classes.
  • Créer un alias pour importer un module.

Importer des classes depuis des modules

Les instructions import, comme expliqué dans le chapitre Modules, permettent d'importer dans un programme du code provenant d'autres fichiers, y compris des classes. L'accès à une classe importée dépend du fait que le module soit importé en entier ou que seuls certains de ses éléments sont importés.

Plusieurs classes peuvent être regroupées dans un module. Pour assurer une bonne organisation, les classes ne doivent être regroupées dans un module que si ce regroupement favorise la réutilisation du module, la réutilisabilité étant l'un des principaux avantages des modules.

Faites le point

Importer des classes depuis des fichiers

Concepts en pratique

Importer des classes

1.
Considérez l'exemple ci-dessus. Combien de classes sont importées dans le second main.py ?
  1. 1
  2. 2
  3. 3
2.
Quelle ligne importe uniquement la classe Level depuis character ?
  1. import Level from character
  2. from character import Level
  3. import Level
3.
Combien de classes peuvent se trouver dans un module ?
  1. aucune
  2. seulement 1
  3. n'importe quel nombre

Utiliser des alias

L'aliasage (aliasing) permet au programmeur d'utiliser un autre nom pour les éléments importés. Ex. : import triangle as tri permet au programme de faire référence au module triangle sous le nom de tri. L'aliasage est utile pour éviter les collisions de noms, mais doit être utilisé avec précaution pour éviter toute confusion.

Exemple 11.3

Utiliser l'aliasage pour importer character

character.py

    class Level:
      def __init__(self, level=1):
        self.level = level
        ...
      def level_up(self):
        ...
    class XP:
      def __init__(self, XP=0):
        self.XP = XP
        ...
      def add_xp(self, num):
        ...

main.py

    import character as c
    
    bard_level = c.Level(1)
    bard_XP = c.XP(0)
    bard_XP.add_xp(300)
    bard_level.level_up()
    ...

Concepts en pratique

Utiliser un alias

Considérez l'exemple ci-dessus. Supposons qu'un programme importe le module character à l'aide de import character as game_char.

4.
Comment le programme créerait-il une instance de Level ?
  1. rogue_level = character.Level()
  2. rogue_level = game_char.Level()
  3. rogue_level = character.game_char.Level()
5.
Quel code crée une collision de noms ?
  1. character = 'Ranger'
  2. Game_char = 'Ranger'
  3. game_char = 'Ranger'

À vous d'essayer

Instruction import manquante

Ajoutez l'instruction import manquante au début du fichier. N'apportez aucune modification au reste du code. Au final, le programme devrait s'exécuter sans erreur.

À vous d'essayer

Instruction import de classe manquante

Ajoutez l'instruction import de classe manquante au début du fichier. N'importez qu'une classe, pas un module complet. N'apportez aucune modification au reste du code. Au final, le programme devrait s'exécuter sans erreur.