Soyons classe: comment créer des modules et des classes avec Python

Dans les langages informatiques orientés objet tels que Python, les classes sont essentiellement un modèle pour créer vos propres objets. Les objets sont une encapsulation de variables et de fonctions dans une seule entité. Les objets obtiennent leurs variables et leurs fonctions à partir des classes.

Tu peux répéter s'il te plait?

Voici quelques exemples qui vous aideront à comprendre - continuez à lire. Il existe également un shell de code interactif, appuyez simplement sur le bouton «Exécuter» en haut de la fenêtre spécifique.

La façon la plus simple de décrire les classes et comment les utiliser est la suivante:

Imaginez que vous avez de grands pouvoirs. Vous créez une espèce («classe»).

Ensuite, vous créez des attributs pour cette espèce («propriétés») - taille, poids, membres, couleur, pouvoirs, etc.

Ensuite, vous créez une instance de cette espèce - Fido le chien, Drogon de Game of Thrones, etc. Ensuite, vous travaillez avec ces instances:

  • Dans un jeu, par exemple, ils s'engageraient dans l'action, interagiraient, en utilisant leurs attributs.
  • Dans une application bancaire, ce sont les différentes transactions.
  • Dans une application d'achat / vente / échange / location de véhicule, la classe de véhicule pourrait alors engendrer des sous-classes telles que des voitures. Chacun aurait des attributs tels que le kilométrage, les options, les caractéristiques, la couleur et la garniture.

Vous pouvez déjà voir pourquoi cela est utile. Vous créez, réutilisez, adaptez et améliorez des éléments d'une manière très efficace, logique et utile.

À présent, vous avez probablement réalisé que c'est une façon de classer et de regrouper, une méthode similaire à la façon dont les humains apprennent:

  • Les animaux sont des êtres vivants qui ne sont ni des humains ni des arbres, au sens basique
  • puis vous passez à différents types d'animaux - les chiens, les chats sont probablement les premiers animaux que la plupart d'entre nous ont appris
  • puis vous passez à différents attributs des animaux - formes, tailles, sons, appendices, etc.

Par exemple, lorsque vous étiez enfant, votre première compréhension d'un chien était probablement quelque chose avec quatre pattes qui aboyaient. Ensuite, vous avez appris à distinguer que certains étaient de vrais chiens, d'autres étaient des jouets. Que ce concept de «chien» contenait de nombreux types.

Créer et utiliser des classes, c'est essentiellement:

  • construire un modèle pour insérer des «choses» - une classification
  • qui peut alors être actionné. Par exemple, attirer toutes les personnes avec des chiens que vous pourriez demander à lier à un blog sur les animaux de compagnie, ou tous les clients de la banque qui pourraient être de bonnes perspectives pour une nouvelle carte de crédit.

Le point principal ici est que les classes sont des objets qui peuvent produire des instances de ces modèles, sur lesquels des opérations et des méthodes peuvent être appliquées. C'est un excellent moyen de conceptualiser, d'organiser et de construire une hiérarchie pour toute organisation ou processus.

Au fur et à mesure que notre monde devient plus complexe, c'est une façon d'imiter cette complexité d'un point de vue hiérarchique. Cela permet également de mieux comprendre les processus et les interactions pour les environnements commerciaux, techniques et sociaux à partir d'un point de technologie de l'information virtuelle.

Un exemple pourrait être un jeu vidéo que vous créez. Chaque caractère peut être une «classe», avec ses propres attributs, qui interagit avec des instances d'autres classes. Le roi George de la classe «King» pourrait interagir avec Court Jester Funnyman de la classe «Clown», et ainsi de suite. Un roi pourrait avoir une classe royale «serviteur», et une classe «serviteur» aurait toujours une classe «roi», par exemple.

Voici ce que nous allons faire:

  • créer une classe et l'utiliser
  • créer un module et déplacer la création et l'initiation de la classe vers le module
  • appeler le module dans un nouveau programme pour utiliser la classe

Le code est disponible dans GitHub ici.

#TSB - Create Class in Python - rocket positions (x,y) and graph
#some items and comments bolded to call attention to processimport matplotlib.pyplot as plt
class Rocket(): def __init__(self, x=0, y=0): #each rocket has (x,y) position; user or calling function has choice #of passing in x and y values, or by default they are set at 0 self.x = x self.y = y def move_up(self): self.y += 1 def move_down(self): self.y -= 1 def move_right(self): self.x += 1 def move_left(self): self.x -= 1
#Make a series of rockets - x,y positions, I am calling it rocketrockets=[]rockets.append(Rocket())rockets.append(Rocket(0,2))rockets.append(Rocket(1,4))rockets.append(Rocket(2,6))rockets.append(Rocket(3,7))rockets.append(Rocket(5,9))rockets.append(Rocket(8, 15)) #Show on a graph where each rocket is
for index, rocket in enumerate(rockets): #original position of rockets print("Rocket %d is at (%d, %d)." % (index, rocket.x, rocket.y)) plt.plot(rocket.x, rocket.y, 'ro', linewidth=2, linestyle="dashed", markersize=12) #move the 'rocket' one up rocket.move_up() print("New Rocket position %d is at (%d, %d)." % (index, rocket.x, rocket.y)) #plot the new position plt.plot(rocket.x, rocket.y, 'bo', linewidth=2, linestyle="dashed", markersize=12) #move the rocket left, then plot the new position rocket.move_left() plt.plot(rocket.x, rocket.y, 'yo', linewidth=2, linestyle="dashed", markersize=12)
#show graph legend to match colors with positionplt.gca().legend(('original position','^ - Moved up', '< - Moved left'))plt.show()#plt.legend(loc='upper left')

Maintenant, créons un module et déplaçons une partie du code ci-dessus vers le module. Chaque fois que nous avons besoin de créer cet ensemble simple de coordonnées x, y dans n'importe quel programme, nous pouvons utiliser le module pour le faire.

Qu'est-ce qu'un module et pourquoi en avons-nous besoin?

Un module est un fichier contenant des définitions et des instructions Python. Le module est un code Python qui peut être appelé à partir d'autres programmes pour des tâches couramment utilisées, sans avoir à les taper dans chaque programme qui les utilise.

Par exemple, lorsque vous appelez «matplotlib.plot», vous appelez un module de package. Si vous n'aviez pas ce module, vous devrez définir la fonctionnalité de tracé dans chaque programme utilisant un graphique de tracé.

À partir de la documentation Python:

Si vous quittez l'interpréteur Python et le saisissez à nouveau, les définitions que vous avez faites (fonctions et variables) sont perdues. Par conséquent, si vous voulez écrire un programme un peu plus long, il vaut mieux utiliser un éditeur de texte pour préparer l'entrée de l'interpréteur et l'exécuter avec ce fichier comme entrée à la place. C'est ce qu'on appelle la création d'un script. À mesure que votre programme s'allonge, vous souhaiterez peut-être le diviser en plusieurs fichiers pour une maintenance plus facile. Vous pouvez également utiliser une fonction pratique que vous avez écrite dans plusieurs programmes sans copier sa définition dans chaque programme.Pour prendre en charge cela, Python a un moyen de mettre des définitions dans un fichier et de les utiliser dans un script ou dans une instance interactive de l'interprète. Un tel fichier est appelé un module;les définitions d'un module peuvent être importées dans d'autres modules ou dans le module principal (la collection de variables auxquelles vous avez accès dans un script exécuté au niveau supérieur et en mode calculatrice).

Voici notre module simple. Il faut la création de classe et les fonctions pour déplacer une instance de cette classe du programme ci-dessus et dans sa propre classe. Nous allons ensuite l'utiliser dans un nouveau programme simplement en appelant et référençant ce module:

Remarquez ce que nous avons fait ci-dessus:

  • créé et initialisé la classe
  • créé une fonction pour déplacer une instance de la classe dans les quatre directions principales (haut, bas, droite, gauche) et les incréments - en tant que paramètres ou arguments de la fonction
  • créé une autre fonction pour calculer la distance entre deux instances de la classe, en utilisant la formule de distance du graphique

Voici comment nous allons utiliser le nouveau module pour réécrire le même programme de la première partie. Remarquez dans la section import au début, nous importons maintenant le simple_module1module que nous venons de créer:

Here’s the output from the code using our module. Note that they are the same, except for the chart title and the shape of the position markers, which I changed for comparative purposes.

That’s great, you may say — what are some other uses for this? One classic example is a bank account. A customer class might contain the name and contact details and — more importantly — the account class would have deposit and withdrawal elements.

This is grossly oversimplified but, for illustrative purposes, it is useful. That’s it — create a template, then define instances of that template with details (properties), and add value by adding, subtracting, modifying, moving, and using these instances for your program objectives.

Still wondering about classes? Ok, let’s get “classy” — here’s another simple illustration. We will call this class “Person”. It has only two properties — name and age. We will then add an instance of this with a person’s name and age, and print it. Depending on what your objective is, you can imagine all the other details you might add — for example, marital status and location preferences for a social networking app, job experience in years and industry specialization for a career related app. Press the little triangle below to see it work.

So there you have it. You can create many different classes, with parent classes, sub-classes and so on. Thanks for reading — please clap if you liked it. Here are some other references if you would like to learn more:

  • Python documentation — Classes
  • Python Object Oriented — Tutorials Point
  • Classes and Objects — learnpython.org