HOWTO · Python

Comment afficher les attributs d'un objet en Python

Découvrez comment afficher un attribut connu, accéder à un attribut dont le nom est dynamique et inspecter les attributs d'une instance en Python.

Sur cette page

Pour afficher un attribut connu, accédez-y avec la notation pointée, puis transmettez sa valeur à print(). Si son nom est stocké dans une chaîne, utilisez getattr() ; pour examiner les attributs enregistrés sur une instance, utilisez __dict__ ou vars() lorsqu’ils sont disponibles ; et pour découvrir les noms qu’un objet expose, utilisez dir(). Ces approches donnent des vues différentes d’un objet : choisissez selon que vous cherchez une valeur précise, le dictionnaire de l’instance ou une liste plus large de noms.

Une classe Person peut définir des attributs de classe, tandis que chaque objet peut également enregistrer ses propres attributs d’instance. Les exemples ci-dessous créent une personne avec un nom, un âge et une ville.

Afficher les attributs d’un objet en Python avec print et l’accès par attribut

Lorsque le nom de l’attribut est connu, la notation pointée est le moyen le plus direct d’en lire la valeur. Transmettez celle-ci à la fonction intégrée print() :

class Person:
    def __init__(self, name, age, city):
        self.name = name
        self.age = age
        self.city = city

person = Person("John Doe", 30, "New York")
print(person.name)
John Doe

Cette expression lit name sur cette instance et écrit sa valeur sur la sortie standard.

Afficher les attributs d’un objet en Python avec la fonction getattr

Utilisez getattr() lorsque le nom de l’attribut est stocké dans une variable ou déterminé au moment de l’exécution. Son deuxième argument doit être une chaîne. Un troisième argument facultatif fournit une valeur de repli si ce nom n’est pas disponible ; sans cette valeur, l’accès à un attribut absent déclenche AttributeError.

class Person:
    def __init__(self, name, age, city):
        self.name = name
        self.age = age
        self.city = city

person = Person("John Doe", 30, "New York")
attribute_name = "city"
city = getattr(person, attribute_name, "Unknown")
print(city)
New York

Modifiez attribute_name pour sélectionner un autre attribut, ou changez la valeur par défaut selon les besoins de votre application. Sans le troisième argument, un nom absent déclenche AttributeError.

Afficher les attributs d’un objet en Python avec l’attribut __dict__

Le __dict__ d’une instance est son dictionnaire d’attributs lorsqu’elle en expose un. Il contient les attributs enregistrés sur l’instance, comme les valeurs affectées à self.name dans __init__ ; il ne comprend pas les attributs définis uniquement sur la classe.

class Person:
    def __init__(self, name, age, city):
        self.name = name
        self.age = age
        self.city = city

person = Person("John Doe", 30, "New York")
attributes = person.__dict__
print(attributes["name"])
John Doe

Certains objets, notamment les instances de classes qui utilisent __slots__ sans dictionnaire, n’exposent pas de __dict__ d’instance. Cette méthode ne convient donc pas à tous les objets.

Afficher les attributs d’un objet en Python avec la fonction dir()

Appelez dir(person) pour obtenir une liste triée des noms que Python expose à l’inspection. Cette liste peut inclure des attributs d’instance et de classe, des méthodes ainsi que des noms spéciaux ; elle ne se limite pas aux données enregistrées sur l’instance. Pour présenter une longue liste dans une mise en page plus lisible, utilisez la fonction pprint() de la bibliothèque standard :

class Person:
    def __init__(self, name, age, city):
        self.name = name
        self.age = age
        self.city = city

person = Person("John Doe", 30, "New York")
print("name" in dir(person))
True

Cette vérification montre que name figure parmi les noms exposés. La liste exacte dépend de l’objet et de sa classe ; une méthode __dir__() personnalisée peut également modifier le résultat de dir(). Considérez donc cette fonction comme une aide à la découverte, et non comme un instantané du dictionnaire de l’instance. Pour afficher la liste complète dans une mise en page lisible, transmettez dir(person) à la fonction pprint().

Afficher les attributs d’un objet en Python avec la fonction vars()

Pour un objet qui expose __dict__, vars(person) renvoie ce même dictionnaire d’attributs d’instance. Vous pouvez transmettre ce dictionnaire à pprint() pour le présenter de façon lisible :

class Person:
    def __init__(self, name, age, city):
        self.name = name
        self.age = age
        self.city = city

person = Person("John Doe", 30, "New York")
print(vars(person)["name"])
John Doe

Appeler vars() sans argument a un autre rôle : la fonction renvoie la table des symboles locale courante. Si l’objet transmis ne possède pas de __dict__, l’appel déclenche TypeError. Utilisez donc cette fonction pour obtenir le dictionnaire de l’instance lorsque vous savez que l’objet en fournit un. Pour mettre en forme le dictionnaire complet, transmettez vars(person) à la fonction pprint().

Conclusion

Choisissez la méthode selon votre besoin : la notation pointée avec print() pour afficher une valeur connue, getattr() pour un nom d’attribut dynamique, __dict__ ou vars() pour consulter les attributs enregistrés sur l’instance lorsque l’objet expose un dictionnaire, et dir() pour découvrir un ensemble plus large de noms. Gardez à l’esprit que dir() peut inclure des méthodes et des noms spéciaux, tandis que le dictionnaire d’une instance ne contient que les attributs enregistrés sur cette instance.