Prehľad
Už ste niekedy premýšľali, aké by to bolo super, mať moc získať zdrojový kód nejakého iného modulu Pythonu vo vašom vlastnom programe? Tým sa otvoria nápady a dvere k toľkým príležitostiam, ako je spracovanie zdrojového kódu modulu, získanie jeho dokumentačného reťazca, automatické vytváranie dokumentácie pre časť kódu. Poviem vám, to je v prípade Pythonu možné na 100% skontrolovať modul.
Modul kontroly jazyka Python
Python skontrolovať modul nám umožňuje kontrolovať objekty bežiaceho programu, získať zdrojový kód modulu, získať dokumentačný reťazec spojený s týmto modulom, prečítať podpis metódy funkcie v Pythone a oveľa viac. Týmto spôsobom môžeme vytvárať projekty, ktoré produkujú dokumentáciu živého kódu pre naše vlastné projekty. To znamená, že musíme urobiť iba potrebné komentáre k nášmu kódu Pythonu a zvyšok práce môžeme nechať na samotný Python, aby pre nás vytvoril dokumentáciu.
Pomocou ukážkového kódu
Aby sme pochopili, ako funguje Python skontrolovať modul funguje, použijeme jednu z našich vlastných definícií vzorového kódu v Pythone, ktorá iba demonštruje dedičnosť v Pythone a spôsob výroby objektov. Pozrime sa na ukážkový modul, ktorý budeme používať vo zvyšku tutoriálu tu:
def module_level_function (arg1, arg2 = 'default', * args):„“ „Som funkcia na úrovni modulu.„“ „
local_var = arg1 * 2
návrat local_var
trieda Osoba (objekt):
"" "Definícia pre triedu osôb.„“ „
def __init __ (ja, meno):
ja.meno = meno
def get_name (self):
"Vráti názov inštancie.„
vrátiť sa.názov
person_obj = Osoba ('sample_instance')
trieda Študent (Osoba):
„“ „Toto je trieda Student, dieťa triedy Person.
„“ „
# Táto metóda nie je súčasťou triedy Person.
def do_something_else (self):
"" "Tu sa dá urobiť všetko.".„“ „
def get_name (self):
„Prepíše verziu z triedy Osoby“
návrat 'Študent (' + ja.meno + ')'
Zadefinovali sme vzorový modul, aby sme z neho mohli v ďalších príkladoch, ktoré napíšeme, začať z neho extrahovať zdrojový kód a ďalšie komponenty. Začnime.
Kontrolný modul
Vyššie uvedený modul Python je uložený v súbore s názvom linuxhint.py v rovnakom adresári, kde budeme vytvárať naše nové skripty Python. Modul v Pythone môžeme skontrolovať tak, že ho najskôr importujeme. Tento príkaz na import bude prítomný vo všetkých skriptoch, ktoré napíšeme, aj v ďalších častiach. Tu je ukážkový program, pomocou ktorého kontrolujeme náš modul:
dovoz skontrolovaťimportovať linuxhint
pre meno, údaje v inšpekcii.getmembers (linuxhint):
ak meno.začína s('__'):
ďalej
print (': !r '.formát (meno, údaje))
S týmto príkazom sa dostaneme späť:
Modul kontroly jazyka Python
Výstup nám poskytuje podrobnosti o tom, koľko tried, funkcií a objektov existuje v tomto module, keď je skript spustený.
Prebieha kontrola tried v module
Vyššie uvedený príklad, ktorý sme ukázali, predstavil všetky podrobnosti modulu naraz. ak chceme získať iba informácie týkajúce sa tried v module, môžeme získať to isté ako:
dovoz skontrolovaťimportovať linuxhint
pre kľúč, údaje pri kontrole.getmembers (linuxhint, skontrolovať.isclass):
print (': !r '.formát (kľúč, údaje))
Pozrime sa na výstup pre tento príkaz:
Python kontroluje triedu modulu
Výstup je úplne rovnaký, ibaže tentokrát sa na konzolu vytlačili iba definície tried.
Inšpekčné metódy v triede
Metódy sú tie, ktoré definujú správanie triedy v OOP a poskytujú informácie o tom, ako sa bude upravovať správanie objektov, keď sa tieto metódy volajú. Z tohto dôvodu je dôležité zdokumentovať všetky metódy, ktoré existujú v triede alebo module. Môžeme získať informácie týkajúce sa metódy ako je táto:
dovoz skontrolovaťz importu
importovať linuxhint
odtlačok (skontrolovať.getmembers (linuxhint.Osoba, skontrolujte.funkcia))
S týmto príkazom sa dostaneme späť:
Inšpekcia metódy triedy
Výstup iba zobrazuje definíciu metódy pre každú prítomnú metódu.
Inšpekcia predmetov triedy
Keď sledujete, koľko miesta je obsadené, keď spustíme skript v jazyku Python, je dôležité vedieť, koľko objektov pre triedu je pre danú triedu v programe vytvorených. Aby sme to vedeli, môžeme v module získať informácie aj o objektoch triedy:
dovoz skontrolovaťz importu
importovať linuxhint
osoba = linuxhint.Osoba (meno = 'inspect_getmembers')
odtlačok (skontrolovať.getmembers (osoba, skontrolovať.izmetóda))
Pozrime sa na výstup pre tento príkaz:
Inšpekčné predmety triedy
Toto tiež vytlačí adresu pamäte, kde tento objekt žije v priebehu tohto programu.
Prebieha kontrola dokumentu v triede
Dokumentačný modul modulu je časť, ktorá skutočne informuje používateľa alebo vývojára o tom, o čom tento modul je a aké funkcie poskytuje. Pomocou modulu inšpekcie môžeme získať dokumentáciu kompletného modulu, ktorá ho lepšie zdokumentuje. Pozrime sa, ako môžeme extrahovať dokumentový reťazec pre triedu:
dovoz skontrolovaťimportovať linuxhint
tlač („Osoba.__doc__: ')
tlačiť (linuxhint.Osoba.__doc__)
print ()
print ('getdoc (Osoba):')
tlačiť (skontrolovať.getdoc (linuxhint.Osoba))
S týmto príkazom sa dostaneme späť:
Získava sa dokumentačný krúžok pre triedu
Kontroluje sa zdroj triedy
Nakoniec vidíme, ako môžeme extrahovať kompletný zdrojový kód triedy aj v programe Python. Toto je dôležitá vlastnosť, ktorá nám pomáha vytvárať dokumentačné nástroje o module Python. Pozrime sa na príklad v akcii:
dovoz skontrolovaťimportovať linuxhint
tlačiť (skontrolovať.getsource (linuxhint.Študent))
S týmto príkazom sa dostaneme späť:
Získanie zdrojového kódu triedy
Inšpekčný zdroj metódy
Rovnakým spôsobom, ako sme extrahovali zdrojový kód triedy, budeme teraz extrahovať zdrojový kód metódy v našom programe Python:
dovoz skontrolovaťimportovať linuxhint
tlačiť (skontrolovať.getsource (linuxhint.Študent.get_name))
S týmto príkazom sa dostaneme späť:
Získanie zdroja metódy v triede
Kontrola podpisu metódy
Podpis metódy poskytuje hlboký vhľad do toho, čo metóda robí a aké vstupy do nej vyžaduje. Poskytuje nám to oprávnenie dokumentovať metódu lepšie, pretože dokumentácia metódy je neúplná bez toho, aby sme vedeli, aký vstup vyžaduje. Takto môžeme extrahovať informácie súvisiace s podpisom metódy:
dovoz skontrolovaťimportovať linuxhint
tlačiť (skontrolovať.podpis (linuxhint.module_level_function))
S týmto príkazom sa dostaneme späť:
Získanie podpisu metódy
Záver
V tejto lekcii sme sa pozreli na to, ako môžeme využiť modul kontroly Pythonu na sledovanie zdrojového kódu a mnohých ďalších interných funkcií programu Python. Prečítajte si viac príspevkov založených na Pythone tu.