logo

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

Eksempel:

Python3


java lokal datotid



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 modulenundersøke. Denne modulen gir en metode kaltgetmembers()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:

full form av i d e

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

>

js flerlinjet streng
>

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