Comment obtenir une liste d’attributs de classe en Python ?
Une classe est un plan ou un prototype défini par l'utilisateur à partir duquel des objets sont créés. Les classes fournissent un moyen de regrouper les données et les fonctionnalités. La création d'une nouvelle classe crée un nouveau type d'objet, permettant de créer de nouvelles instances de ce type. Chaque instance de classe peut avoir des attributs qui lui sont attachés pour maintenir son état. Les instances de classe peuvent également avoir des méthodes (définies par leur classe) pour modifier leur état.
Exemple:
Python3
# Python program to demonstrate> # classes> class> Student:> > > # class variable> > stream> => 'COE'> > > # Constructor> > def> __init__(> self> , name, roll_no):> > > self> .name> => name> > self> .roll_no> => roll_no> > # Driver's code> a> => Student(> 'Shivam'> ,> 3425> )> b> => Student(> 'Sachin'> ,> 3624> )> print> (a.stream)> print> (b.stream)> print> (a.name)> print> (b.name)> # Class variables can be accessed> # using class name also> print> (Student.stream)> |
Sortir :
COE COE Shivam Sachin COE
Note: Pour plus d'informations, reportez-vous à Classes et objets Python .
Obtenir une liste d'attributs de classe
Il est important de connaître les attributs avec lesquels nous travaillons. Pour les petites données, il est facile de mémoriser les noms des attributs, mais lorsque l’on travaille avec des données volumineuses, il est difficile de mémoriser tous les attributs. Heureusement, nous disposons de quelques fonctions en Python pour cette tâche.
Utilisation de la fonction dir() intégrée
Pour obtenir la liste de tous les attributs, méthodes ainsi que certaines méthodes magiques héritées d'une classe, nous utilisons un élément intégré appelé toi() .
Exemple:
Python3
class> Number :> > > # Class Attributes> > one> => 'first'> > two> => 'second'> > three> => 'third'> > > def> __init__(> self> , attr):> > self> .attr> => attr> > > def> show(> self> ):> > print> (> self> .one,> self> .two,> > self> .three,> self> .attr)> > n> => Number(> 2> )> n.show()> # Passing both the object> # and class as argument> # to the dir method> print> (> '
By passing object of class'> )> print> (> dir> (n))> print> (> '
By passing class itself '> )> print> (> dir> (Number))> |
Sortir :
premier deuxième tiers 2 En passant l'objet de la classe ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__ ', '__str__', '__subclasshook__', '__weakref__', 'attr', 'one', 'show', 'trois', 'two'] En passant la classe elle-même ['__class__', '__delattr__', '__dict__' , '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', ' __module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'one', 'show' , 'trois', 'deux']
Utilisation de la méthode getmembers()
Une autre façon de trouver une liste d'attributs consiste à utiliser le module inspecter . Ce module fournit une méthode appelée obtenir des membres() qui renvoie une liste d'attributs et de méthodes de classe.
Exemple:
Python3
import> inspect> class> Number :> > > # Class Attributes> > one> => 'first'> > two> => 'second'> > three> => 'third'> > > def> __init__(> self> , attr):> > self> .attr> => attr> > > def> show(> self> ):> > print> (> self> .one,> self> .two,> > self> .three,> self> .attr)> > > # Driver's code> n> => Number(> 2> )> n.show()> # getmembers() returns all the> # members of an object> for> i> in> inspect.getmembers(n):> > > # to remove private and protected> > # functions> > if> not> i[> 0> ].startswith(> '_'> ):> > > # To remove other methods that> > # doesnot start with a underscore> > if> not> inspect.ismethod(i[> 1> ]):> > print> (i)> |
Sortir :
first second third 2 ('attr', 2) ('one', 'first') ('three', 'third') ('two', 'second') Utilisation de la méthode magique __dict__()
Pour trouver des attributs, nous pouvons également utiliser la méthode magique __dict__ . Cette méthode renvoie uniquement les attributs d'instance.
Exemple:
Python3
class> Number :> > > # Class Attributes> > one> => 'first'> > two> => 'second'> > three> => 'third'> > > def> __init__(> self> , attr):> > self> .attr> => attr> > > def> show(> self> ):> > print> (> self> .one,> self> .two,> > self> .three,> self> .attr)> > # Driver's code> n> => Number(> 2> )> n.show()> # using __dict__ to access attributes> # of the object n along with their values> print> (n.__dict__)> # to only access attributes> print> (n.__dict__.keys())> # to only access values> print> (n.__dict__.values())> |
Sortir:
first second third 2 {'attr': 2} dict_keys(['attr']) dict_values([2]) Utilisation de la fonction vars()
Pour trouver des attributs, nous pouvons également utiliser la fonction vars(). Cette méthode renvoie le dictionnaire des attributs d'instance de l'objet donné.
Python3
import> inspect> class> Number :> > > # Class Attributes> > one> => 'first'> > two> => 'second'> > three> => 'third'> > > def> __init__(> self> , attr):> > self> .attr> => attr> > > def> show(> self> ):> > print> (> self> .one,> self> .two,> > self> .three,> self> .attr)> > # Driver's code> n> => Number(> 2> )> n.show()> # using the vars function> print> (> vars> (n))> |
Sortir:
first second third 2 {'attr': 2}