Comment fonctionne le système de classe en Python ?

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Je pense que tout est dans le titre, mais je vais développer un peu plus.
Etant un habitué du système une classe correspond à un fichier, notamment avec Java et PHP, j'ai du mal à comprendre comment développé orienté objet avec Python.
De ce que j'ai pu comprendre cela correspond plus à un fichier correspond à une bibliothèque.

Ai je bon ? Comment dois-je organisé mes fichiers ?

Salut,

C'est à peu près ça.

Un fichier en Python contient le code d'un module. Ce module peut être un script destiné à être exécuté (le point d'entrée d'un programme) ou bien simplement une ressource que l'on peut charger quand on veut en utiliser le code (en utilisant import nom_du_module).

C'est dû au fait que le code des classes en Python n'est jamais très long. En effet, il est plutôt rare d'avoir une classe de 100 lignes ou plus. Du coup, plutôt que de s'imposer la lourdeur d'un fichier par classe, on préfère créer un fichier par module, chaque module contenant une "petite bibliothèque", ou bien une fonctionnalité précise du programme.

En termes d'organisation, tu vas créer un module pour écrire dedans du code dont tu estimes qu'il ne sera jamais chargé partiellement dans un programme. Par exemple si tu écris un compilateur, toutes les classes d'objets qui vont composer les arbres syntaxiques du langage vont être contenues dans le même module. Si tu écris un programme dont tu veux te laisser la possibilité de lui donner plusieurs interfaces utilisateur, tu vas mettre dans module tout le code "métier" du programme, puis créer, un nouveau module contenant l'interface en ligne de commandes, puis d'autres modules pour une interface graphique Pygame, etc.

Après, il faut savoir qu'un module a une existence propre au runtime : le module définit un espace de nom, ce qui veut dire que lorsque tu as l'impression de créer une variable globale en Python, celle-ci est en fait une variable de module. Plus loin encore, tout comme tu peux manipuler des objets ou des classes, Python te laisse aussi manipuler des modules (par exemple pour ajouter des classes ou des fonctions dedans, dynamiquement), mais là c'est plutôt des considérations avancées.

Bref, un fichier = un module = une ou pluieurs classes + une ou plusieurs fonctions + une ou plusieurs variables de module.

+3 -0

Le __init__.py sert quand tu veux créer des modules qui en englobent d'autres. Si tu crées un dossier contenant un module (potentiellement vide) __init__.py, tous les autres modules Python que tu ajouteras dedans seront accessibles comme des sous-modules de ce dossier.

Un peu comme tu peux créer des namespaces imbriqués en C++ :

1
2
3
4
5
6
7
namespace foo {
   namespace bar {
      void baz();
   }
}

foo::bar::baz();
+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte