À 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.