logo

Hvordan får man en liste over klasseattributter i Python?

En klasse er en brugerdefineret blueprint eller prototype, hvorfra objekter oprettes. Klasser giver mulighed for at samle data og funktionalitet sammen. Oprettelse af en ny klasse opretter en ny type objekt, hvilket gør det muligt at lave nye forekomster af den type. Hver klasseinstans kan have attributter knyttet til sig for at opretholde sin tilstand. Klasseforekomster kan også have metoder (defineret af dens klasse) til at ændre dens tilstand.

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

>

>

Output:

COE COE Shivam Sachin COE>

Bemærk: For mere information, se Python-klasser og -objekter .

Få en liste over klasseattributter

Det er vigtigt at kende de egenskaber, vi arbejder med. For små data er det nemt at huske navnene på attributterne, men når man arbejder med store data, er det svært at huske alle attributterne. Heldigvis har vi nogle funktioner i Python tilgængelige til denne opgave.

Brug af indbygget dir() funktion

For at få listen over alle attributter, metoder sammen med nogle nedarvede magiske metoder i en klasse, bruger vi en indbygget kaldetdu().

Eksempel:

Python3


java lambda



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

>

>

Output:

første anden tredjedel 2 Ved at sende objekt af 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 at 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']

Brug af getmembers()-metoden

En anden måde at finde en liste over attributter på er ved at bruge moduletinspicere. Dette modul giver en metode kaldetgetmembers()der 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)>

>

>

Output:

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

Brug af __dict__() Magic Method

For at finde attributter kan vi også bruge magisk metode__dikt__. Denne metode returnerer kun instansattributter.

Eksempel:

rækkefølge tilfældigt i sql

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

>

git add --all
>

Produktion:

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

Brug vars() funktion

For at finde attributter kan vi også bruge vars() funktion. Denne metode returnerer ordbogen over instansattributter for det givne objekt.

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

>

>

Produktion:

first second third 2 {'attr': 2}>