À quoi sert la fonction dir en Python ?
La fonction dir
permet de récupérer des informations sur un espace de nommage ou un objet.
Utilisée sans arguments, elle retournera tous les noms définis dans l'espace de nommage local :
>>> a = 5 >>> dir() ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'a']
On remarque dans le code ci-dessus qu'il existe de nombreux noms prédéfinis lors de l'ouverture d'un interpréteur Python ou au lancement d'un script.
C'est le cas par exemple de la variable __name__
qui dans le cas d'un script exécuté directement, est égale à la chaîne de caractères __main__
(voir le glossaire sur name).
On remarque également le nom de la variable a
(que l'on a définie à la première ligne) qui est donc contenu dans l'espace local de l'interpréteur Python depuis lequel est exécutée la fonction dir
.
La fonction dir
permet également de récupérer une liste de noms appartenant à un objet.
Cette liste de noms n'est pas exhaustive, en effet, dir
retourne une liste de noms les plus pertinents selon les contextes.
class Voiture: def __init__(self): self.marque = "Renault" self.couleur = "Rouge" self.prix = 20000 v = Voiture() print(dir(v))
Il est possible de surcharger cette méthode à l'intérieur d'une classe pour indiquer quels attributs vous souhaitez retourner lors de l'utilisation de la méthode dir
sur une instance de votre classe :
class Voiture: def __init__(self): self.marque = "Renault" self.couleur = "Rouge" self.prix = 20000 def __dir__(self): return ["marque", "couleur"] v = Voiture() print(dir(v))
☝️Ici on indique que la méthode dir
ne doit retourner que les attributs "marque"
et "couleur"
.
L'attribut "prix"
n'est donc pas affiché quand on utilise la fonction dir
sur l'instance v
.