Python 3 : Différence entre versions
De TARENTINO
Aller à la navigationAller à la recherche| Ligne 2 : | Ligne 2 : | ||
{{Menu_Python}}{{References}} | {{Menu_Python}}{{References}} | ||
{{Menu_Python_3}}{{Pythonline}} | {{Menu_Python_3}}{{Pythonline}} | ||
| − | + | __NOTOC__ | |
<font size=6 color=red><center>'''Programmation objet'''</center></font> | <font size=6 color=red><center>'''Programmation objet'''</center></font> | ||
== Introduction == | == Introduction == | ||
Version du 28 mars 2020 à 12:41
Array
Réferences: Doctor Python Pythonnerie sdz.tdct.org Python en ligne
Introduction
- Python est un langage de programmation inventé par Guido van Rossum. La première version de python est sortie en 1991. C'est un langage de programmation interprété, c'est-à-dire qu'il n'est pas nécessaire de le compiler avant de l'exécuter.
Les Objets
- Pour pouvoir créer des objets dans un programme, il faut avant tout avoir défini une classe.
- Il s'agit en quelque sorte d'un plan , qui décrit les caractéristiques de l'objet.
- En particulier, une classe définit les deux éléments constitutifs des objets que sont ses attributs et fonctionnalités.
- Un objet est une instance d'une classe, qui possède son propre état, défini par les valeurs de ses différents attributs.
- On peut créer autant d'objets que l'on désire avec une classe.
Les attributs
- Les attributs de classe permettent de stocker des informations au niveau de la classe. Elle sont similaires aux variables.
- Il est possible à tout moment de créer un attribut pour l'objet.
Les méthodes
- Les méthodes sont des fonctions définies dans une classe.
1 # coding: utf-8
2 class Voiture:
3 def __init__(self):
4 self.nom = "Ferrari"
5 def donne_moi_le_modele(self):
6 return "250"
>>> ma_voiture=Voiture() >>> ma_voiture.donne_moi_le_modele() '250'
Les propriétés
- Il est de préférable de passer par des propriétés pour changer les valeurs des attributs.
- Il existe une convention pour changer la valeur d'un attribut, de passer:
- par des getter (ou accesseurs) en francais
- des setter ( mutateurs )
1 class Voiture(object):
2 def __init__(self):
3 self._roues=4
4 def _get_roues(self):
5 print("Récupération du nombre de roues")
6 return self._roues
7 def _set_roues(self, v):
8 print("Changement du nombre de roues")
9 self._roues = v
10 roues=property(_get_roues, _set_roues)
>>> ma_voiture=Voiture() >>> ma_voiture.roues=5 Changement du nombre de roues >>> ma_voiture.roues Récupération du nombre de roues 5
Les décorateurs
1 class Voiture(object):
2 def __init__(self):
3 self._roues=4
4 @property
5 def _get_roues(self):
6 print "Récupération du nombre de roues"
7 return self._roues
8 @roues.setter
9 def _set_roues(self, v):
10 print "Changement du nombre de roues"
11 self._roues = v
12 roues=property(_get_roues, _set_roues)
L'héritage de classe
- Permet de créer de nouvelles classes mais avec une base existante.
1 class Voiture:
2 roues = 4
3 moteur = 1
4 def __init__(self):
5 self.nom = "A déterminer"
6 class VoitureSport(Voiture):
7 def __init__(self):
8 self.nom = "Ferrari"
- On a indiqué que VoitureSport a hérité de classe Voiture, elle récupère toutes ses méthodes et ses attributs.
- Instanciation de la classe voiture
>>> ma_voiture=Voiture() >>> ma_voiture.nom 'A déterminer' >>> ma_voiture.roues 4
- Instanciation de la classe VoitureSport
>>> ma_voiture_sport=VoitureSport() >>> ma_voiture_sport.nom 'Ferrari' >>> ma_voiture_sport.roues 4
- On parle de surcharge de méthode.
Classes et Instances
- Notion de classe (Class) d'objet est un type (type)
- Elle comprend 2 parties
- Attribut
- Méthode
- Une classe regroupe des fonctions et des attributs qui définissent un objet.
- On appelle par ailleurs les fonctions d'une classe des " méthodes ".
- Notion d'objet, d'instanciation et de constructeur
- Une instance d'objet est un objet concret.
- La création d'un objet est une instanciation.
- La méthode qui la réalise est le constructeur.
- La méthode __init__() est appelée lors de la création d'un objet.
- self.attribut_1 est une manière de stocker une information dans la classe. On parle d'attribut de classe. Dans notre cas, on stocke le nom dans l'attribut attribut_1.
- Une instance d'objet est un objet concret.
1 '''Définission d'une classe'''
2 >>> class X:
3 def __init__(self,val):
4 self.attribut_1=val
5 def methode_1(self):
6 return self.attribut_1
7 '''Instanciation'''
8 >>> instance_1=X(3)
9 '''Exécution d'une méthode'''
10 >>> print( instance_1.methode_1())
=> 3
Affectation par références
Exemple:
laVoitureDeMaFemme = maVoiture
- Ici, je crée une nouvelle référence à un seul et même objet (moi et mon épouse n'avons qu'une voiture).
- Ce n'est pas une instanciation !
- Si je repeins ma voiture en vert la voiture de ma femme sera donc verte.
1 >>> class Personne:
2 ... def __init__(self, age ):
3 ... self.age = age
4 ... def vieillir(self):
5 ... self.age += 1
6 ...
7 >>> docteurJekyll = Personne(40)
8 >>> misterHyde = docteurJekyll
9 >>> docteurJekyll.vieillir()
10 >>> print( misterHyde.age )
=> 41
Variables et méthodes de classe et d’instance
- Variables et méthodes d’instance
- Chaque attribut est propre à sa classe, c'est une variable d’instance.
- Une méthode qui reçoit en paramètre l’adresse de l’instance via la référence « self » est dite méthode d’instance.
- Variables et méthodes de classe
- Une variable commune à toutes les instances, par exemple le nombre de voitures est appelée variable de classe.
- Une méthode qui ne reçoit pas en paramètre la référence « self » ne peut pas manipuler les variables d’instances. Elle a accès par contre aux variables de classe.
Exemple
1 >>> class X:
2 ... variable_de_classe = 5
3 ... def __init__(self, valeur ):
4 ... self.variable_d_instance = valeur
5 ... def methode_d_instance( self ):
6 ... self.variable_d_instance += 1
7 ... @classmethod
8 ... def methode_de_classe( cls ):
9 ... cls.variable_de_classe += 1
10 ...
11 >>> une_instance = X(3)
12 >>> une_instance.methode_d_instance()
13 >>> X.methode_de_classe()
14 >>> print( une_instance.variable_d_instance)
15 4
16 >>> print( X.variable_de_classe )
17 6
18 >>> print( une_instance.variable_de_classe )
19 6
20 >>> class X:
21 ... variable_de_classe = 4.
22 .. def methode_de_classe():
23 ... print( X.variable_de_classe )
24 ...
25 >>> X.methode_de_classe()
26 4
