Rectification du Python

This commit is contained in:
Shadow 2019-11-30 20:00:43 +01:00
parent 771bfda39c
commit 102f11a6ec
1 changed files with 14 additions and 15 deletions

View File

@ -726,7 +726,7 @@ On va commencer par un exemple simple : si je veux ajouter un élément à ma li
`>>> a.append(1)
>>> a
[0, 0, 0, 0, 0, 1]`
La liste a contients maintenant 6 éléments.
La liste a contient maintenant 6 éléments.
La méthode que nous allons voir fait l'inverse : elle supprime la première occurence d'un terme donné dans la liste donnée en objet. Exemple, reprenons notre liste `a` :
`>>> a.remove(1)
@ -744,36 +744,35 @@ NameError : name 'a' is not defined`
Voila ! Il existe encore une fois d'autres méthodes pour les listes comme `count() pop()`… Je vous laisse les regarder par vous même si vous en avez besoin. Comme pour les chaînes de caractères, la commande `dir()` peut vous donner toutes les méthodes implémentées pour l'objet spécifié en argument :
`>>> dir(list)`
vous renvoie donc toutes les méthodes aplicables aux listes.
vous renvoie donc toutes les méthodes applicables aux listes.
[label=VI_3][b][color=#3030cc]3°. La programmation orientée objet[/color][/b]
Maintenant, passons aux choses sérieuses ! La partie programmation… Jusqu'ici vous n'avez vu que exemples pratiques, maintenant un peu de théorie…
Vous vous souvenez de notre définition ? Un objet un type de variable avec lesquels on peut faire des manipulations grâce à des fonctions que l'on appelle des méthodes. Dans la programmation orientée objet, le mot méthode désigne seulement la partie à droite du point : `objet.`[b]`méthode`[/b]. Toutes les méthodes sont des fonctions. En programmation, il faut des variables que l'on appelle [i]attributs[/i] de lobjet.
Vous vous souvenez de notre définition ? Un objet un type de variable avec lesquels on peut faire des manipulations grâce à des fonctions que l'on appelle des méthodes. Dans la programmation orientée objet, on manipule des… objets ! Ces objets ont des méthodes et des attributs. On note `obj.mthd_att` avec `obj` lobjet, et `mthd_att` la méthode ou lattribut de lobjet.
En Python, pour programmer orienté objet, il faut en fait déclarer une "classe" du nom que vous souhaitez, et qui contiendra toutes les méthodes et attributs de votre objet. Donc vous aurez à la fois des fonctions déclarées avec un `def` comme on l'a vu, mais aussi des variables déclarées dans une fonction spéciale. Petit exemple rapide :
En Python, pour programmer orienté objet, il faut en fait déclarer une "classe" est le plan de votre objet. Elle contient toutes les méthodes et attributs de tous les objets de cette classe. Donc, dans votre classe vous aurez à la fois des fonctions déclarées avec un `def` comme on l'a vu, mais aussi des variables. Petit exemple rapide :
`class Voiture():
— def mthd():
— def mthd(self):
…`
Dans ce code, une classe du nom de `Voiture` est crée. Nous avons un nouveau type de variable, on peut tout à fait écrire : `a = Voiture()`. Et notre objet dans tout ça ? Eh bien cest `a` ! En gros en programmation orientée objet, on crée des classes qui contiennent des méthodes et des attributs. Ensuite, le programmeur, ré-utilise ses classes et créer des objets.
Dans ce code, une classe du nom de `Voiture` est crée. Nous avons un nouveau type de variable, on peut tout à fait écrire : `a = Voiture()`. Et notre objet dans tout ça ? Eh bien cest `a` ! En résumé, on crée des classes qui sont des modèles pour des objets. La classe décrit les méthodes et les attributs que les objets vont contenir. Ensuite, on crée les objets pour de bon.
On va commencer étape par étape. Tout d'abord, il nous faut un sujet. Bon là, pour le coup ça va être un truc bidon et sans interêt, mais je vous promets un truc plus utile quand vous serez des pros ! On va faire un script Python qui créer un objet `add()` qui va additionner deux nombres.
On va commencer étape par étape. Tout d'abord, il nous faut un sujet. Bon là, pour le coup ça va être un truc bidon et sans interêt, mais je vous promets un truc plus utile quand vous serez des pros ! On va faire un script Python qui créer une classe qui va permettre dadditionner deux nombres.
Donc commençons par ouvrir un nouveau fichier.
Pour déclarer votre objet, il faut procéder comme pour une fonction, à la différence que `def` déclare une fonction, il faut donc utiliser `class` pour déclarer votre objet comme tel.
[code]class add():[/code]
[code]class Add():[/code]
Ensuite il faut déclarer vos méthodes dans la classe donc en respectant l'indentation ! Commençons par les variables dans la fonction spéciale. Pour tous les objets, vous avez besoin de variables qui sont attachées à l'objet qui peuvent être appelées dans toutes les fonctions de votre classe, pour cela il faut les déclarer dans une fonction qui s'appelle `__init__()` le nom est imposé et doit être modifié ! Cette fonction spéciale a pour particularité dêtre automatiquement appelée lors de la déclaration dun objet.
Ensuite il faut déclarer vos méthodes dans la classe donc en respectant l'indentation ! Commençons par une méthode spéciale qui va permettre de construire les objets : `__init__()`. Elle sera appelée dès qu'un objet sera créé et servira à l'initialiser. C'est ici qu'on va donner une valeur aux attributs.
Un autre problème se profile alors, on ne connait pas le nom de la variable qui aura `add` comme type. Donc on utilise le mot `self` qui désigne la variable portant le type de votre objet… Vous me suivez ? Je ne vous en dis pas plus pour l'instant, vous aller comprendre.
Un autre problème se profile alors, on ne connait pas le nom de la variable qui aura `Add` comme type. Donc on utilise le mot `self` qui désigne la variable portant le type de votre objet… Vous me suivez ? Je ne vous en dis pas plus pour l'instant, vous aller comprendre.
On va donc écrire `def __init__(self):` pour définir la fonction indispensable `__init__()` qui prend `self` comme argument, à savoir lobjet en lui-même.
On va donc écrire `def __init__(self):` pour définir la fonction `__init__()` qui prend `self` comme argument, à savoir lobjet en lui-même.
Du côté de la calculatrice, `self` est « remplacé » par le nom de lobjet, mais vous, en tant que programmeur, vous ne pouvez pas connaître le nom de lobjet. En programmant en programmation orientée objet, vous coder des choses susceptibles daider dautres programmeurs, il faut donc être le plus souple possible ! Du coup, comme vous ne connaissez pas le nom de lobjet, il faut mettre `self` à chaque fois que vous voulez appeler lobjet. Maintenant passons aux méthodes !
On a vu que les méthodes pouvaient être des fonctions mais aussi des variables. Dans le cas des variables il est très intéressant de savoir que les méthodes qui sont des variables sont considérées comme globale dans toute la classe.
Toutes les méthodes prennent en premier paramètre l'objet sur lequel elles sont appelées, à savoir `self`. Par exemple, `liste.append(2)` appelle la méthode `append` avec deux paramètres : `liste` et `2`.
Reprenons notre exemple à la c** de code qui additionne deux termes : il faut nécessairement deux variables : `a` et `b`. Dans notre classe il y aura donc deux attributs, je rappelle que les attributs sont des variables. En plus il faut dautres fonctions pour entrer deux nombres, et renvoyer la somme. Doù deux autres méthodes. Dans ces fonctions, les attributs vont marcher comme des variables globales.
@ -783,13 +782,13 @@ Bon assez de théorie !
Reprenons notre code !
[code]class addition():
[code]class Addition():
— def __init(self)__:
— — self.a = 0 // on crée un premier attribut a
— — self.b = 0 // de même avec b
— — return None // on finit par le return None qui termine la fonction proprement
— def enter(self, terme_un, terme_deux): // on prend en argument self or maintenant lobjet est associé à ses attributs, donc en prenant self, je prend également tous les attributs de self. On peut utiliser les variables self.a self.b. Comme le principe de la fonction est de mettre à jour les deux termes de `self` on prend également deux arguments : `terme_un` et `terme_deux`.
— def enter(self, terme_un, terme_deux): // on prend en argument self or maintenant lobjet est associé à ses attributs, donc en prenant self, je prends également tous les attributs de self. On peut utiliser les variables self.a self.b. Comme le principe de la fonction est de mettre à jour les deux termes de `self` on prend également deux arguments : `terme_un` et `terme_deux`.
— — self.a = terme_un // on met à jour lattribut a en lui assignant la valeur de `terme_un`
_ _ self.b = terme_deux
— — return None