43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
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()
|