Kā Python iegūt klases atribūtu sarakstu?
Klase ir lietotāja definēts projekts vai prototips, no kura tiek izveidoti objekti. Klases nodrošina iespēju apvienot datus un funkcionalitāti. Izveidojot jaunu klasi, tiek izveidots jauna veida objekts, kas ļauj izveidot jaunus šāda veida gadījumus. Katrai klases instancei var būt pievienoti atribūti, lai uzturētu tās stāvokli. Klases gadījumiem var būt arī metodes (ko nosaka tā klase), lai mainītu tās stāvokli.
Piemērs:
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)> |
Izvade:
COE COE Shivam Sachin COE
Piezīme: Lai iegūtu papildinformāciju, skatiet Python klases un objekti .
Klases atribūtu saraksta iegūšana
Ir svarīgi zināt atribūtus, ar kuriem mēs strādājam. Nelieliem datiem ir viegli atcerēties atribūtu nosaukumus, bet, strādājot ar lieliem datiem, ir grūti iegaumēt visus atribūtus. Par laimi, šim uzdevumam Python ir pieejamas dažas funkcijas.
Izmantojot iebūvēto dir() funkciju
Lai iegūtu visu klases atribūtu, metožu sarakstu, kā arī dažas mantotās klases maģiskās metodes, mēs izmantojam iebūvēto nosaukumu tu () .
Piemērs:
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))> |
Izvade:
pirmā otrā trešdaļa 2 Nododot objektam no klases ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__'t,_', ___g,_' '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', ____'reduce ', '__sizeof__ ', '__str__', '__subclasshook__', '__weakref__', 'attr', 'one', 'show', 'trīs', 'divi'] Nokārtojot pašu klasi ['__class__', '__delattr__', _'_dic , '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', __'_, __'_, ,' modulis 'izrādīt' , 'trīs', 'divi']
Getmembers() metodes izmantošana
Vēl viens veids, kā atrast atribūtu sarakstu, ir izmantot moduli pārbaudīt . Šis modulis nodrošina metodi, ko sauc saņemt biedrus () kas atgriež klases atribūtu un metožu sarakstu.
Piemērs:
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)> |
Izvade:
first second third 2 ('attr', 2) ('one', 'first') ('three', 'third') ('two', 'second') Izmantojot __dict__() burvju metodi
Lai atrastu atribūtus, varam izmantot arī maģisko metodi __dikt__ . Šī metode atgriež tikai gadījumu atribūtus.
Piemērs:
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())> |
Izvade:
first second third 2 {'attr': 2} dict_keys(['attr']) dict_values([2]) Vars() funkcijas izmantošana
Lai atrastu atribūtus, varam izmantot arī funkciju vars(). Šī metode atgriež dotā objekta gadījumu atribūtu vārdnīcu.
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))> |
Izvade:
first second third 2 {'attr': 2}