Hvordan få en liste over klasseattributter i Python?

En klasse er en brukerdefinert blåkopi eller prototype som objekter opprettes fra. Klasser gir et middel til å samle data og funksjonalitet sammen. Oppretting av en ny klasse skaper en ny type objekt, slik at nye forekomster av den typen kan lages. Hver klasseforekomst kan ha attributter knyttet til seg for å opprettholde sin tilstand. Klasseforekomster kan også ha metoder (definert av klassen) for å endre tilstanden.

Eksempel:

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)>

Utgang:

COE COE Shivam Sachin COE 

Merk: For mer informasjon, se Python-klasser og -objekter .

Få en liste over klasseattributter

Det er viktig å kjenne til egenskapene vi jobber med. For små data er det lett å huske navnene på attributtene, men når du arbeider med store data, er det vanskelig å huske alle attributtene. Heldigvis har vi noen funksjoner i Python tilgjengelig for denne oppgaven.

Bruker innebygd dir() funksjon

For å få listen over alle attributtene, metoder sammen med noen arvede magiske metoder i en klasse, bruker vi en innebygd kalt du() .

Eksempel:

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))>

Utgang:

første andre tredje 2 Ved å sende objekt av klasse ['__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', 'tre', 'to'] Ved å bestå selve klassen ['__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' , 'tre', 'to']

Bruke getmembers()-metoden

En annen måte å finne en liste over attributter på er å bruke modulen undersøke . Denne modulen gir en metode kalt getmembers() som returnerer en liste over klasseattributter og metoder.

Eksempel:

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)>

Utgang:

first second third 2 ('attr', 2) ('one', 'first') ('three', 'third') ('two', 'second') 

Ved å bruke __dict__() Magic Method

For å finne attributter kan vi også bruke magisk metode __dikt__ . Denne metoden returnerer bare forekomstattributter.

Eksempel:

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())>

Produksjon:

first second third 2 {'attr': 2} dict_keys(['attr']) dict_values([2]) 

Bruke vars() funksjonen

For å finne attributter kan vi også bruke vars() funksjonen. Denne metoden returnerer ordboken over forekomstattributter for det gitte objektet.

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))>

Produksjon:

first second third 2 {'attr': 2}