Improve Python chapter with introspection
This commit is contained in:
parent
a439c57757
commit
71b4c7a7fd
|
@ -124,6 +124,9 @@ Nous pouvons donc utiliser ces mêmes \textbf{dunder methods} (\textbf{double-un
|
|||
|
||||
\section{Structures de données}
|
||||
|
||||
Le langage Python est un langage orienté objet au sens où \textbf{tout} est un objet.
|
||||
Cela signifie qu'il ne se limite pas à modéliser une structure de données, mais qu'il embarque son propre comportement, avec ses méthodes.
|
||||
|
||||
Les principales structures de données sont :
|
||||
|
||||
\begin{itemize}
|
||||
|
@ -135,9 +138,6 @@ Les principales structures de données sont :
|
|||
|
||||
\subsection{Dictionnaires}
|
||||
|
||||
Dans le langage Python, un dictionnaire est un objet.
|
||||
Cela signifie qu'il ne se limite pas à modéliser une structure de données, mais qu'il embarque son propre comportement, avec ses méthodes.
|
||||
|
||||
Au hasard des internets multimédias, on est tombé sur un morceau de code à base de \texttt{pop} et de réinitialisation.
|
||||
Quelque chose comme ceci:
|
||||
|
||||
|
@ -179,6 +179,40 @@ en gros, ça te retourne la valeur de la clé si elle existe, et si pas, cela te
|
|||
|
||||
Ca évite, dans une boucle, de vérifier si la clé existe déjà, et si pas, de la créer
|
||||
|
||||
\section{Introspection}
|
||||
|
||||
\begin{minted}{python}
|
||||
|
||||
def on_command_1():
|
||||
print("Oune")
|
||||
|
||||
def on_command_2():
|
||||
print("Dos")
|
||||
|
||||
def on_command_3():
|
||||
print("Tresse")
|
||||
|
||||
def prrrt():
|
||||
print("Won't be printed")
|
||||
\end{minted}
|
||||
|
||||
Tu peux retrouver les trois méthodes \texttt{on\_command\_*}` via la fonction `dir()`:
|
||||
|
||||
\begin{minted}{python}
|
||||
>>> import module_chelou
|
||||
>>> dir(module_chelou)
|
||||
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'on_command_1', 'on_command_2', 'on_command_3', 'prrrt']
|
||||
|
||||
>>> for function_name in [x for x in dir(module_chelou) if "on_command_" in x]:
|
||||
... getattr(module_chelou, function_name)()
|
||||
...
|
||||
Oune
|
||||
Dos
|
||||
Tresse
|
||||
|
||||
```
|
||||
\end{minted}
|
||||
|
||||
\section{The Zen of Python}
|
||||
|
||||
(aussi connue sous PEP20 ;)) \index{PEP!PEP20}
|
||||
|
|
Loading…
Reference in New Issue