logo

Hoe krijg ik een lijst met klassekenmerken in Python?

Een klasse is een door de gebruiker gedefinieerde blauwdruk of prototype waaruit objecten worden gemaakt. Klassen bieden een manier om data en functionaliteit te bundelen. Door een nieuwe klasse te maken, wordt een nieuw type object gemaakt, waardoor nieuwe exemplaren van dat type kunnen worden gemaakt. Aan elke klasse-instantie kunnen attributen zijn gekoppeld om de status ervan te behouden. Klasse-instanties kunnen ook methoden hebben (gedefinieerd door de klasse) om de status ervan te wijzigen.

Voorbeeld:



Python3




Python slaat json op in een bestand



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



>

>

Uitgang:

COE COE Shivam Sachin COE>

Opmerking: Voor meer informatie, zie Python-klassen en objecten .

Een lijst met klassekenmerken verkrijgen

Het is belangrijk om te weten met welke attributen we werken. Voor kleine gegevens is het gemakkelijk om de namen van de attributen te onthouden, maar als u met grote gegevens werkt, is het moeilijk om alle attributen te onthouden. Gelukkig hebben we voor deze taak enkele functies in Python beschikbaar.

Met behulp van de ingebouwde dir()-functie

Om de lijst met alle attributen, methoden en enkele overgeërfde magische methoden van een klasse te krijgen, gebruiken we een ingebouwde genaamdJij().

Voorbeeld:

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

>

df loc
>

Uitgang:

eerste tweede derde 2 Door object van klasse ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', door te geven '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__ ', '__str__', '__subclasshook__', '__weakref__', 'attr', 'one', 'show', 'three', 'two'] Door de klasse zelf te passeren ['__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' , 'drie twee']

Met behulp van de getmember()-methode

Een andere manier om een ​​lijst met attributen te vinden is door de module te gebruikeninspecteren. Deze module biedt een methode genaamdleden ophalen()dat een lijst met klassekenmerken en methoden retourneert.

Voorbeeld:

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

>

testen en soorten testen

>

Uitgang:

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

Met behulp van __dict__() Magic-methode

Om attributen te vinden kunnen we ook de magische methode gebruiken__dict__. Deze methode retourneert alleen instantiekenmerken.

Voorbeeld:

Python3




vervang de tekenreeks in Java
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())>

>

>

Uitgang:

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

De functie vars() gebruiken

Om attributen te vinden kunnen we ook de functie vars() gebruiken. Deze methode retourneert het woordenboek met instantieattributen van het gegeven object.

Python3


java csv lezen



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

>

>

Uitgang:

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