Initial commit
This commit is contained in:
42
source/07-objects/introspection/base.py
Normal file
42
source/07-objects/introspection/base.py
Normal file
@ -0,0 +1,42 @@
|
||||
import pdir
|
||||
|
||||
|
||||
def use_dir():
|
||||
"""
|
||||
Découvrir l'introspection via la fonction `dir()`
|
||||
|
||||
Nécessite pdir2 pour montrer une sortie plus sympa aux étudiants.
|
||||
|
||||
"""
|
||||
# En python, tout est un objet, et a donc des attributs et des méthodes.
|
||||
# Le truc bien, c'est qu'en Python, on peut aussi manipuler et retrouver les
|
||||
# propriétés de ces attributs et méthodes.
|
||||
chaine = "Bonjour"
|
||||
# À la place de `pdir` on pouvait utiliser `dir` qui fait partie de python,
|
||||
# mais qui affiche la liste des attributs de l'objet de façon beaucoup moins
|
||||
# lisible.
|
||||
print(pdir(chaine))
|
||||
|
||||
|
||||
def check_attrs():
|
||||
"""
|
||||
Via l'introspection, accéder à des attributs d'objets programmatiquement.
|
||||
|
||||
"""
|
||||
chaine = "Bonjour"
|
||||
# Une chaîne a toujours une méthode `capitalize`, donc ça va fonctionner
|
||||
if hasattr(chaine, "capitalize"):
|
||||
print("L'objet a bien une fonction `capitalize`.")
|
||||
print(getattr(chaine, "capitalize"))
|
||||
# Mais une chaîne n'a pas d'attribut `doesnotexist`.
|
||||
if hasattr(chaine, "doesnotexist"):
|
||||
print("L'objet a un attribut `doesnotexist`.")
|
||||
else:
|
||||
print("L'objet n'a pas d'attribut `doesnotexist`.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("Utilisation de la fonction `dir` :")
|
||||
use_dir()
|
||||
print("Utilisation de l'introspection d'attributs :")
|
||||
check_attrs()
|
Reference in New Issue
Block a user