Skip to main content

Comment importer une classe depuis un fichier

How to Import a Class in Python

En Python, vous pouvez importer une classe depuis un autre fichier, offrant ainsi une multitude d'avantages en termes d'organisation du code, de maintenabilité et de collaboration. Cette fonctionnalité permet aux programmeurs de tirer parti de modules de code préexistants, rendant leurs programmes plus efficaces et concis. En important des classes, les développeurs peuvent accéder et utiliser les fonctionnalités fournies par ces classes sans avoir à réécrire l'intégralité du code depuis le début. Dans cet article, nous explorerons comment importer une classe depuis un autre fichier en Python.

Imports et Attributs

L'instruction import en Python nous permet d'utiliser des modules et des packages externes qui fournissent des fonctionnalités supplémentaires. Les attributs en Python se réfèrent aux propriétés ou valeurs associées à un objet que nous pouvons accéder et modifier.

Importer des Modules en Python Utilisant La Commande import

Nous pouvons utiliser l'instruction import en Python pour importer des modules et des packages externes qui fournissent des fonctionnalités supplémentaires. Par exemple, pour utiliser le module math en Python, nous pouvons écrire :

import math
print(math.pi)

Une fois que nous avons importé le module, nous pouvons utiliser ses fonctions et attributs.

Utilisation des Attributs en Python

En Python, nous pouvons accéder aux attributs d'un objet en utilisant la notation .. Par exemple, étant donné un objet obj, nous pouvons accéder à ses attributs en utilisant obj.attribute. Par exemple, considérez la définition de classe suivante :

import math
class Circle:
    def __init__(self, radius):
        self.radius = radius
        self.area = math.pi * radius ** 2
c = Circle(2)
print(c.radius)  # Output: 2
print(c.area)  # Output: 12.566370614359172

Ici, nous définissons une classe Circle qui représente un cercle avec un radius donné. Nous utilisons le module math pour calculer l'aire du cercle en utilisant la formule pi * radius ** 2.

Notez que nous attribuons la valeur de l'aire à un attribut area de l'objet. Ici, nous créons une instance c de la classe Circle avec un radius de 2. Nous accédons ensuite à ses attributs en utilisant la notation .. Nous imprimons les valeurs des attributs radius et area, qui sont 2 et 12.57 (approx.), respectivement.

Importation d'une Seule Classe en Utilisant la Commande from

Explorons comment importer une seule classe à partir d'un autre fichier Python en utilisant le mot-clé from.

Vous pouvez y parvenir en spécifiant le nom du fichier et la classe que vous souhaitez importer, comme ceci : from my_module import MyClass.

Dans cet exemple, nous importons la classe MyClass à partir d'un fichier appelé my_module. Nous pouvons ensuite créer une instance de MyClass et utiliser ses méthodes comme souhaité.

Par exemple : from path.to.my_module import MyClass. Nous importons la classe MyClass à partir d'un fichier situé dans un chemin spécifique (path/to/my_module). Cela est utile lorsque le fichier que vous souhaitez importer se trouve dans un sous-répertoire de votre projet.

En Python, importer une classe à partir d'un autre fichier est un processus simple qui nous permet de tirer parti des avantages offerts par les fichiers importés.

Importation de Plusieurs Classes

En Python, il est possible d'importer plusieurs classes d'un module en listant les noms des classes et en les séparant par des virgules.

Par exemple, vous pouvez importer class1, class2 et class3 du module nommé module_name comme suit : from module_name import class1, class2, class3.

Alternativement, vous pouvez utiliser la syntaxe from module_name import * pour importer toutes les classes de module_name. Toutefois, il est important de noter que cette approche est découragée car elle peut entraîner des conflits de noms, surtout lorsque plusieurs classes portant le même nom existent dans différents modules.

Importation de Toutes les Classes d'un Module en Utilisant la Commande From

Pour importer toutes les classes d'un module en Python, vous pouvez utiliser la notation *. Cela vous permet d'éviter de devoir spécifier chaque nom de classe individuellement lors de l'importation à partir d'un autre fichier dans un répertoire différent.

Supposons que nous ayons un module nommé my_module.py contenant les classes Class1 et Class2.

# my_module.py

class Class1:
    pass
    
class Class2:
    pass

Pour importer toutes les classes de my_module.py dans un autre script, vous pouvez utiliser la syntaxe suivante :

# script.py

from my_module import *

Cela importera à la fois Class1 et Class2 dans script.py.

Si vous avez besoin d'utiliser seulement une classe d'un module, il est généralement préférable d'être plus précis sur ce que vous importez pour éviter tout conflit de nommage potentiel ou problèmes de performance.

En supposant que nous avons un module nommé my_module.py contenant les classes Class1 et Class2.

# my_module.py

class Class1:
    pass

class Class2:
    pass

Pour importer uniquement Class1 dans un autre script, vous pouvez utiliser la syntaxe suivante :

# script.py

from my_module import Class1

Cela importera uniquement Class1 dans script.py.

Importation de Classes avec des Alias

En Python, nous pouvons importer des classes avec des alias pour rendre notre code plus lisible et concis. Les alias nous permettent d'utiliser un nom plus court et plus pratique pour une classe, sans avoir à taper son nom complet chaque fois que nous l'utilisons.

# Importing the math module and aliasing it as m
import math as m

# Calculating the square root of 4 using the math.sqrt() method
print(m.sqrt(4))  # Output: 2.0

Dans cet exemple, nous importons le module math et le renommons m. Cela nous permet d'utiliser m comme un raccourci pour math dans tout notre code. Nous utilisons ensuite la méthode m.sqrt() pour calculer la racine carrée de 4 et afficher le résultat.

# Importing the square and cube functions from the math module and aliasing them as sq and cu
from math import sqrt as sq, pow as cu

# Calculating the square root of 4 using the sq() function
print(sq(4))  # Output: 2.0

# Calculating the cube of 3 using the cu() function
print(cu(3, 3))  # Output: 27.0

Dans cet exemple, nous importons les fonctions sqrt et pow du module math en les aliasant respectivement sq et cu. Cela nous permet d'utiliser sq et cu comme abréviations pour sqrt et pow dans tout notre code. Nous utilisons ensuite la fonction sq() pour calculer la racine carrée de 4 et la fonction cu() pour calculer le cube de 3 et imprimer les résultats.

Dans l'ensemble, utiliser des alias peut rendre notre code Python plus succinct et plus facile à lire, surtout lorsqu'il s'agit de classes ou de modules compliqués.

Importer des Classes depuis un Sous-module ou un Paquet

Pour importer une classe depuis un autre fichier/module en Python, nous pouvons utiliser le mot-clé import suivi par le nom du module ou du fichier où la classe est définie, puis accéder à la classe en utilisant la syntaxe pointée.

Supposons que nous avons un module my_module.py avec une classe MyClass définie à l'intérieur. Pour importer cette classe dans un autre fichier, nous pouvons faire from my_module import MyClass.

Supposons que nous avons un paquet appelé example qui contient un sous-module utils avec une classe MyUtils définie à l'intérieur. Pour importer cette classe dans un autre fichier, nous pouvons faire :

# we are importing the class MyUtils from the utils submodule inside the example package
# from example.utils import MyUtils

# creating an instance of MyUtils
# obj = MyUtils()

Après avoir importé la classe, nous pouvons créer une instance de celle-ci en appelant le constructeur avec des parenthèses.

Importer des Classes depuis un Répertoire Parent avec sys.path

Le module sys en Python permet d'accéder à divers paramètres et fonctions spécifiques au système. La liste sys.path est l'un des attributs de ce module et contient les répertoires où Python recherche des modules. Pour importer des classes ou des modules depuis un répertoire en dehors du chemin de recherche par défaut, vous pouvez manipuler cette liste.

Voici un guide étape par étape pour importer toutes les classes d'un autre dossier dans le répertoire parent :

  1. Identifier le Répertoire Cible : Tout d'abord, vous devez identifier le répertoire depuis lequel vous souhaitez importer des classes. Ce répertoire devrait se trouver dans le répertoire parent de votre script actuel.
  2. Mettre à jour sys.path : Pour ajouter le répertoire cible à sys.path, vous pouvez utiliser la méthode sys.path.append(). Par exemple :
import sys
sys.path.append('/path/to/your/directory')

Remplacez '/path/to/your/directory' par le chemin réel vers votre répertoire cible.

  1. Importer des modules : Une fois le répertoire cible ajouté à sys.path, vous pouvez importer des modules et des classes de ce répertoire comme s'ils étaient dans le répertoire courant. Par exemple :
from target_directory import module_name

Remplacez target_directory par le nom du dossier d'où vous souhaitez importer et module_name par le nom du module ou de la classe que vous souhaitez utiliser.

Si vous souhaitez importer toutes les classes ou modules depuis le dossier cible, vous pouvez utiliser un import générique :

from target_directory import *

Soyez prudent lorsque vous utilisez des importations génériques, car elles peuvent conduire à des conflits de noms et rendre votre code plus difficile à comprendre.

  1. Importer et Utiliser : Avec les modules et les classes importés, vous pouvez les utiliser dans votre code selon les besoins. N'oubliez pas que le dossier cible doit contenir un fichier __init__.py pour être reconnu comme un paquet.

La commande import sys de Python peut être un outil puissant lorsque vous devez importer des classes ou des modules depuis des répertoires situés en dehors du chemin de recherche par défaut. En manipulant la variable sys.path, vous pouvez étendre les capacités de Python pour inclure des répertoires supplémentaires, vous permettant d'organiser votre code plus efficacement et de maintenir une structure de projet propre.

Contribuez avec nous!

N'hésitez pas à contribuer aux tutoriels Python sur GitHub : créez un fork, mettez à jour le contenu et émettez une pull request.

Profile picture for user AliaksandrSumich
Python engineer, expert in third-party web services integration.
Mise à jour : 03/05/2024 - 22:51
Profile picture for user angarsky
Examiné et approuvé