You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: lectures/oop_intro.md
+19-19Lines changed: 19 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -60,13 +60,13 @@ Alors, dans laquelle de ces catégories Python s'inscrit-il ?
60
60
61
61
En réalité, Python est un langage pragmatique qui mêle les styles orienté objet, fonctionnel et procédural, plutôt que d'adopter une approche puriste.
62
62
63
-
D'une part, cela permet à Python et à ses utilisateurs de sélectionner les bons aspects de différents paradigmes.
63
+
D'une part, cela permet à Python et à ses utilisateurs de retenir les meilleurs aspects de différents paradigmes.
64
64
65
65
D'autre part, ce manque de pureté peut parfois prêter à confusion.
66
66
67
67
Heureusement, cette confusion est réduite au minimum si vous comprenez qu'à un niveau fondamental, Python *est* orienté objet.
68
68
69
-
Par cela, nous voulons dire qu'en Python, *tout est objet*.
69
+
Nous entendons par là qu'en Python, *tout est objet*.
70
70
71
71
Dans ce cours, nous expliquons ce que signifie cette affirmation et pourquoi elle est importante.
72
72
@@ -81,7 +81,7 @@ Nous utiliserons la bibliothèque tierce suivante
81
81
82
82
## Objets
83
83
84
-
```{index} single: Python; Objects
84
+
```{index} single: Python; Objets
85
85
```
86
86
87
87
En Python, un *objet* est une collection de données et d'instructions conservées dans la mémoire de l'ordinateur, qui comprend
@@ -99,7 +99,7 @@ Ces concepts sont définis et discutés successivement ci-dessous.
99
99
```{index} single: Python; Type
100
100
```
101
101
102
-
Python propose différents types d'objets, afin d'accommoder différentes catégories de données.
102
+
Python propose différents types d'objets, afin de prendre en charge différentes catégories de données.
103
103
104
104
Par exemple
105
105
@@ -136,7 +136,7 @@ tags: [raises-exception]
136
136
'300' + 400
137
137
```
138
138
139
-
Ici, nous mélangeons les types, et il n'est pas clair pour Python si l'utilisateur souhaite
139
+
Ici, nous mélangeons les types, et Python ne peut pas déterminer si l'utilisateur souhaite
140
140
141
141
* convertir `'300'` en entier puis l'ajouter à `400`, ou
142
142
* convertir `400` en chaîne puis la concaténer avec `'300'`
@@ -146,7 +146,7 @@ Certains langages pourraient tenter de deviner, mais Python est *fortement typé
146
146
* Le type est important, et la conversion de type implicite est rare.
147
147
* Python répondra plutôt en levant une `TypeError`.
148
148
149
-
Pour éviter l'erreur, vous devez clarifier en modifiant le type concerné.
149
+
Pour éviter l'erreur, vous devez lever l'ambiguïté en modifiant le type concerné.
150
150
151
151
Par exemple,
152
152
@@ -157,10 +157,10 @@ int('300') + 400 # Pour additionner en tant que nombres, convertir la chaîne
157
157
(identity)=
158
158
### Identité
159
159
160
-
```{index} single: Python; Identity
160
+
```{index} single: Python; Identité
161
161
```
162
162
163
-
En Python, chaque objet possède un identifiant unique, qui aide Python (et nous-mêmes) à suivre l'objet.
163
+
En Python, chaque objet possède un identifiant unique, qui aide Python (et nous-mêmes) à garder la trace de l'objet.
164
164
165
165
L'identité d'un objet peut être obtenue via la fonction `id()`
166
166
@@ -180,7 +180,7 @@ L'identité d'un objet est en fait simplement l'adresse de l'objet en mémoire.
180
180
181
181
### Contenu de l'objet : données et attributs
182
182
183
-
```{index} single: Python; Content
183
+
```{index} single: Python; Contenu
184
184
```
185
185
186
186
Si nous posons `x = 42`, alors nous créons un objet de type `int` qui contient
@@ -205,23 +205,23 @@ Lorsque Python crée cet objet entier, il stocke avec lui diverses informations
205
205
206
206
Tout nom suivant un point est appelé un *attribut* de l'objet situé à gauche du point.
207
207
208
-
* par exemple, ``imag`` et `__class__` sont des attributs de `x`.
208
+
* par exemple, `imag` et `__class__` sont des attributs de `x`.
209
209
210
210
Nous voyons dans cet exemple que les objets possèdent des attributs contenant des informations auxiliaires.
211
211
212
212
Ils possèdent également des attributs qui agissent comme des fonctions, appelés *méthodes*.
213
213
214
-
Ces attributs sont importants, alors discutons-en en profondeur.
214
+
Ces attributs sont importants ; examinons-les plus en détail.
215
215
216
216
(methods)=
217
217
### Méthodes
218
218
219
-
```{index} single: Python; Methods
219
+
```{index} single: Python; Méthodes
220
220
```
221
221
222
222
Les méthodes sont des *fonctions regroupées avec les objets*.
223
223
224
-
Formellement, les méthodes sont des attributs d'objets qui sont **appelables** -- c'est-à-dire des attributs qui peuvent être appelés comme des fonctions
224
+
Formellement, les méthodes sont des attributs d'objets qui sont **appelables** --- c'est-à-dire des attributs qui peuvent être appelés comme des fonctions
225
225
226
226
```{code-cell} python3
227
227
x = ['foo', 'bar']
@@ -259,7 +259,7 @@ x[0] = 'aa' # Affectation d'élément via la notation entre crochets
259
259
x
260
260
```
261
261
262
-
Il ne semble pas qu'aucune méthode ne soit utilisée ici, mais en fait la notation d'affectation entre crochets n'est qu'une interface pratique vers un appel de méthode.
262
+
On pourrait croire qu'aucune méthode n'est utilisée ici, mais en fait la notation d'affectation entre crochets n'est qu'une interface pratique pour appeler une méthode.
263
263
264
264
Ce qui se passe réellement, c'est que Python appelle la méthode `__setitem__`, comme suit
265
265
@@ -273,7 +273,7 @@ x
273
273
274
274
## Inspection avec Rich
275
275
276
-
Il existe un joli paquet appelé [rich](https://github.com/Textualize/rich) qui
276
+
Il existe un package très pratique appelé [rich](https://github.com/Textualize/rich) qui
277
277
nous aide à visualiser le contenu d'un objet.
278
278
279
279
Par exemple,
@@ -323,7 +323,7 @@ incohérent et plus difficile à retenir.
323
323
Pour éviter cela, le créateur de Python a choisi d'ajouter
324
324
`len()` comme fonction intégrée, afin de souligner que `len()` est la convention.
325
325
326
-
Ceci dit, Python *reste* néanmoins orienté objet en coulisses.
326
+
Cela dit, Python *reste* orienté objet en coulisses.
327
327
328
328
En effet, la liste `x` évoquée ci-dessus possède une méthode appelée `__len__()`.
329
329
@@ -334,7 +334,7 @@ Autrement dit, le code suivant est équivalent :
334
334
```{code-cell} python3
335
335
x = ['a', 'b']
336
336
len(x)
337
-
```
337
+
```
338
338
et
339
339
340
340
```{code-cell} python3
@@ -352,7 +352,7 @@ Le message de ce cours est clair :
352
352
Cela inclut non seulement les listes, les chaînes de caractères, etc., mais aussi des choses moins évidentes, telles que
353
353
354
354
* les fonctions (une fois qu'elles ont été chargées en mémoire)
0 commit comments