Ülevaade
Kas olete mõelnud, kui lahe oleks, kui teil oleks võimu mõne muu Pythoni mooduli lähtekoodi hankimiseks oma programmis? See avab ideid ja uksi nii paljudele võimalustele nagu mooduli lähtekoodi töötlemine, selle käsu hankimine, kooditüki jaoks automaatselt dokumentatsiooni tootmine. Las ma ütlen teile, Pythoni omadega on see 100% võimalik kontrollima moodul.
Pythoni kontrollimoodul
Python kontrollima moodul võimaldab meil kontrollida jooksva programmi objekte, hankida mooduli lähtekoodi, hankida selle mooduliga seotud käske, lugeda Pythoni funktsiooni meetodi allkirja ja palju muud. Nii saame ehitada projekte, mis toodavad reaalajas koodidokumentatsiooni meie enda projektide jaoks. See tähendab, et peame oma Pythoni koodi kohta tegema ainult vajalikke kommentaare ja ülejäänud dokumendid saame meile dokumentide tootmiseks jätta Pythoni enda teha.
Kasutades näidiskoodi
Et mõista, kuidas Pythoni omad on kontrollima moodul töötab, kasutame Pythonis ühte enda näidiskoodi määratlust, mis lihtsalt näitab pärandit Pythonis ja kuidas objekte tehakse. Vaatame näidismoodulit, mida kasutame ülejäänud õpetuses siin:
def mooduli_taseme_funktsioon (arg1, arg2 = 'vaikimisi', * args):"" "Olen moodulitaseme funktsioon."" "
kohalik_var = arg1 * 2
return local_var
klass Isik (objekt):
"" "Isiku klassi määratlus."" "
def __init __ (ise, nimi):
ise.nimi = nimi
def get_name (ise):
"Tagastab eksemplari nime."
tagasi ise.nimi
person_obj = Isik ('näidis_asutus')
klassi õpilane (inimene):
"" "See on Õpilaste klass, Isiku klassi laps.
"" "
# See meetod ei kuulu Isiku klassi.
def do_something_else (ise):
"" "Siin saab kõike teha."" "
def get_name (ise):
"Alistab versiooni klassist Isik"
tagastage 'Student (' + ise.nimi + ')'
Oleme määranud näidismooduli, et saaksime sellest lähtekoodi ja muid komponente välja tõmmata hilisemates kirjutistes. Alustame.
Kontrollmoodul
Ülaltoodud Pythoni moodul salvestatakse faili nimega linuxhint.py samas kataloogis, kuhu teeme oma uued Pythoni skriptid. Saame Pythonis moodulit kontrollida, tehes kõigepealt selle impordi. See impordilause on olemas kõigis skriptides, mille kirjutame ka hilisemates jaotistes. Siin on näidisprogramm, millega me oma moodulit kontrollime:
impordikontrollimport linuxhint
nime, kontrollitavate andmete osas.getmembers (linuxhint):
kui nimi.startswith ('__'):
jätkata
print (': !r '.vorming (nimi, andmed))
Selle käsuga saame tagasi:
Pythoni kontrollimoodul
Väljund annab meile üksikasjad selle kohta, kui palju klasse, funktsioone ja objekte selles moodulis skripti käivitamisel eksisteerib.
Klasside kontrollimine moodulis
Ülaltoodud näites esitasime kõik mooduli üksikasjad korraga. kui tahame moodulis saada ainult klassidega seotud teavet, võime saada sama mis:
impordikontrollimport linuxhint
võtme, kontrollitavate andmete jaoks.getmembers (linuxhint, kontrollige.isclass):
print (': !r '.vorming (võti, andmed))
Vaatame selle käsu väljundit:
Pythoni kontrollimooduli klass
Väljund on täpselt sama, ainult et seekord trükiti konsoolile ainult klassi definitsioonid.
Meetodite kontrollimine klassis
Meetodid on see, mis määratleb klassi käitumise OOP-des ja annab teavet selle kohta, kuidas objektide käitumist nende meetodite kasutamisel muudetakse. Seetõttu on oluline dokumenteerida kõik klassis või moodulis eksisteerivad meetodid. Saame teavet sellise meetodi kohta:
impordikontrollalates pprint impordi pprint
import linuxhint
pprint (kontrollige.getmembers (linuxhint.Isik, kontrollige.isfunktsioon))
Selle käsuga saame tagasi:
Klassimeetodi kontrollimine
Väljund näitab lihtsalt iga olemasoleva meetodi meetodi definitsiooni.
Klassi objektide kontrollimine
Kui uurite, kui palju ruumi on hõivatud, kui käivitame Pythoni skripti, on oluline teada, kui palju klassi objekte klassis programmis instantsitakse. Selle teadmiseks saame teavet ka klassi objektide kohta moodulis:
impordikontrollalates pprint impordi pprint
import linuxhint
inimene = linuxhint.Isik (nimi = 'inspect_getmembers')
pprint (kontrollige.liikmed (isik, kontrollige.ismetood)
Vaatame selle käsu väljundit:
Klassi objektide kontrollimine
See prindib ka mäluaadressi, kus see objekt selle programmi käigus elab.
Klassi juhendamise kontrollimine
Mooduli käsklus on see osa, mis tegelikult teavitab kasutajat või arendajat, et mida see moodul endast kujutab ja milliseid funktsioone see pakub. Inspect mooduli abil saame täieliku mooduli docstringi selle paremaks dokumenteerimiseks. Vaatame, kuidas saame klassile õpetuse välja tõmmata:
impordikontrollimport linuxhint
print ('Isik.__doc__: ')
print (linuxhint.Isik.__doc__)
print ()
print ('getdoc (isik):')
print (kontrollige.getdoc (linuxhint.Isik))
Selle käsuga saame tagasi:
Tunniks Docstringi hankimine
Klassi allika kontrollimine
Lõpuks näeme, kuidas saame klassi täieliku lähtekoodi ka Pythoni programmis välja tõmmata. See on oluline funktsioon ja aitab meil luua Pythoni mooduli kohta dokumentatsioonivahendeid. Vaatame näite tegevuses:
impordikontrollimport linuxhint
print (kontrollige.saab allika (linuxhint.Õpilane))
Selle käsuga saame tagasi:
Klassi lähtekoodi hankimine
Meetodi allika kontrollimine
Samamoodi, nagu ekstraktisime klassi lähtekoodi, eraldame nüüd Pythoni programmis meetodi lähtekoodi:
impordikontrollimport linuxhint
print (kontrollige.saab allika (linuxhint.Üliõpilane.saada_nimi))
Selle käsuga saame tagasi:
Meetodi allika saamine klassis
Kontrollimeetodi allkiri
Meetodi allkiri annab sügava ülevaate selle kohta, mida meetod teeb ja millise sisendi ta vajab. See annab meile võimaluse meetodit paremini dokumenteerida, kuna meetodi dokumentatsioon on puudulik, teadmata, millist sisendit see vajab. Nii saame meetodi allkirjaga seotud teabe välja võtta:
impordikontrollimport linuxhint
print (kontrollige.allkiri (linuxhint.mooduli_taseme_funktsioon))
Selle käsuga saame tagasi:
Meetodi allkirja saamine
Järeldus
Selles tunnis vaatasime, kuidas saaksime Pythoni inspekteerimismoodulit kasutada lähtekoodi ja paljude muude Pythoni programmi sisemiste funktsioonide vaatamiseks. Loe rohkem Pythoni põhiseid postitusi siit.