|
|
@@ -12,18 +12,20 @@ Un nouveau built-in: `id()` |
|
|
|
|
|
|
|
L'adresse de l'objet pointé par la variable: |
|
|
|
|
|
|
|
``` |
|
|
|
```python |
|
|
|
>>> a = 42532 |
|
|
|
>>> id(a) |
|
|
|
94295009035968 |
|
|
|
>>> b = a |
|
|
|
>>> id(b) # même objet |
|
|
|
94295009035968 |
|
|
|
>>> c = 42532 # objet différent, même valeur |
|
|
|
>>> c = 42532 # objet différent |
|
|
|
>>> id(c) |
|
|
|
140400601470800 |
|
|
|
``` |
|
|
|
|
|
|
|
On en aura besoin tout à l'heure. |
|
|
|
Notez bien les deux objets différents (le fait que |
|
|
|
l'objet *pointé* ait la même valeur n'a pas d'importance) |
|
|
|
|
|
|
|
# Paradigmes |
|
|
|
|
|
|
@@ -124,21 +126,23 @@ Une autre adresse mémoire, donc un objet différent. |
|
|
|
|
|
|
|
# Méthodes |
|
|
|
|
|
|
|
Une fonction dans une classe |
|
|
|
Une fonction dans une classe: |
|
|
|
|
|
|
|
``` |
|
|
|
```python |
|
|
|
class MyObject: |
|
|
|
def my_method(the_object): |
|
|
|
print("hello", the_object) |
|
|
|
``` |
|
|
|
|
|
|
|
\vfill |
|
|
|
|
|
|
|
C'est tout! |
|
|
|
|
|
|
|
# Méthodes - 2 |
|
|
|
|
|
|
|
La méthode n'existe pas en dehors de la classe - souvenez vous des cellules ! |
|
|
|
|
|
|
|
``` |
|
|
|
```python |
|
|
|
>>> my_method() |
|
|
|
NameError |
|
|
|
>>> object = MyObject() |
|
|
@@ -148,8 +152,11 @@ Hello, <MyObject at 0x7f52c9f6d6d8> |
|
|
|
|
|
|
|
# Méthodes - 2 |
|
|
|
|
|
|
|
``` |
|
|
|
>>> object.my_method() |
|
|
|
```.python |
|
|
|
>>> object = MyObject() |
|
|
|
>>> object |
|
|
|
<MyObject at 0x7f52c9f6d6d8> |
|
|
|
>>>> object.my_method() |
|
|
|
Hello, <MyObject at 0x7f52c9f6d6d8> |
|
|
|
``` |
|
|
|
|
|
|
@@ -199,7 +206,7 @@ class MyObject: |
|
|
|
|
|
|
|
```python |
|
|
|
>>> object = MyObject() |
|
|
|
>>> object.attribute # ici l'attribut n'existe pas |
|
|
|
>>> object.attribute # l'attribut n'existe pas |
|
|
|
AttributError |
|
|
|
>>> object.attribute = 42 # maintenant oui |
|
|
|
>>> object.attribute |
|
|
@@ -223,10 +230,10 @@ class MyObject: |
|
|
|
|
|
|
|
```python |
|
|
|
>>> object = MyObject() |
|
|
|
>>> object.print_attribute() # ici l'attribut n'existe pas |
|
|
|
>>> object.print_attribute() # l'attribut n'existe pas |
|
|
|
AttributError |
|
|
|
>>> object.attribute = 42 |
|
|
|
>>> object.print_attribute() # ça marche |
|
|
|
>>> object.print_attribute() # maintenant oui |
|
|
|
42 |
|
|
|
>>> object.change_attribute(43) |
|
|
|
>>> object.attribute |
|
|
@@ -490,7 +497,9 @@ Aujourd'hui on va utiliser `numbersapi.com` |
|
|
|
Example: On fait une requête sur `http://numbersapi.com/42`, on récupère du texte |
|
|
|
contenant un fait intéressant (*trivia* en anglais) à propos du nombre 42 . |
|
|
|
|
|
|
|
# Squelette |
|
|
|
# Code de départ |
|
|
|
|
|
|
|
Voir sur GitHub: https://github.com/E2L/cours-python/blob/master/sources/numbers/numbers_proc.py |
|
|
|
|
|
|
|
```python |
|
|
|
import sys |
|
|
@@ -560,3 +569,32 @@ def get_trivia(self, number): |
|
|
|
url = self.build_url(number) |
|
|
|
return self.do_request(url) |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
# Code final |
|
|
|
|
|
|
|
Voir sur GitHub: |
|
|
|
https://github.com/E2L/cours-python/blob/master/sources/numbers/numbers_object.py |
|
|
|
|
|
|
|
|
|
|
|
# Pour la prochaine fois - Exercice 1 |
|
|
|
|
|
|
|
|
|
|
|
Partir des sources dans le répertoire `hangman`: |
|
|
|
|
|
|
|
https://github.com/E2L/cours-python/tree/master/sources/hangman |
|
|
|
|
|
|
|
* Rajouter la gestion des scores (dans `scores.py`) au code exsistant |
|
|
|
du jeu du pendu (dans `hangman.py`) |
|
|
|
|
|
|
|
|
|
|
|
* Refactorer en essayant d'introduire des classes |
|
|
|
|
|
|
|
# Pour la prochaine fois - Exercice 2 |
|
|
|
|
|
|
|
Partir du code dans `numbers_object.py`, rajouter la getsion |
|
|
|
des autres URL de http://numbersapi.com |
|
|
|
|
|
|
|
# Des questions? Du code? |
|
|
|
|
|
|
|
Envoyez-moi un e-mail à `d.merej@gmail.com` :) |