Kako pridobiti seznam atributov razreda v Pythonu?

Razred je uporabniško definiran načrt ali prototip, iz katerega so ustvarjeni predmeti. Razredi zagotavljajo sredstvo za združevanje podatkov in funkcionalnosti. Ustvarjanje novega razreda ustvari novo vrsto predmeta, ki omogoča ustvarjanje novih primerkov te vrste. Vsakemu primerku razreda so lahko pripeti atributi za ohranjanje njegovega stanja. Primerki razreda imajo lahko tudi metode (ki jih definira razred) za spreminjanje svojega stanja.

primer:

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

Izhod:

COE COE Shivam Sachin COE 

Opomba: Za več informacij glejte Razredi in objekti Python .

Pridobivanje seznama atributov razreda

Pomembno je poznati lastnosti, s katerimi delamo. Pri majhnih podatkih si je enostavno zapomniti imena atributov, pri delu z ogromnimi podatki pa si je težko zapomniti vse atribute. Na srečo imamo za to nalogo na voljo nekaj funkcij v Pythonu.

Uporaba vgrajene funkcije dir().

Da bi dobili seznam vseh atributov, metod skupaj z nekaterimi podedovanimi čarobnimi metodami razreda, uporabimo vgrajeno imenovano ti() .

primer:

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

Izhod:

prvi drugi tretji 2 S posredovanjem objekta razreda ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__seduce__', '__seof__', '__seof__', '__repr__', '__seof__', '__Sefr__', '__Sefr__' ', '__str__', '__subclasshook__', '__weakref__', 'attr', 'one', 'show', 'three', 'two'] S posredovanjem samega razreda ['__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' , 'tri', 'dva']

Uporaba metode getmembers().

Drugi način iskanja seznama atributov je uporaba modula pregledati . Ta modul ponuja metodo, imenovano getmembers() ki vrne seznam atributov in metod razreda.

primer:

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

Izhod:

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

Uporaba čarobne metode __dict__().

Za iskanje atributov lahko uporabimo tudi magično metodo __dict__ . Ta metoda vrne samo atribute primerka.

primer:

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

Izhod:

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

Uporaba funkcije vars().

Za iskanje atributov lahko uporabimo tudi funkcijo vars(). Ta metoda vrne slovar atributov primerka danega predmeta.

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

Izhod:

first second third 2 {'attr': 2}