Přehled
Přemýšleli jste někdy, jak cool by bylo mít moc skutečně získat zdrojový kód nějakého jiného modulu Pythonu ve vašem vlastním programu? Tím se otevřou nápady a dveře tolika příležitostem, jako je zpracování zdrojového kódu modulu, získání jeho dokumentu, automatické vytváření dokumentace pro část kódu. Řeknu vám, u Pythonu je to 100% možné kontrolovat modul.
Modul pro kontrolu Pythonu
Krajta kontrolovat modul nám umožňuje kontrolovat objekty spuštěného programu, získat zdrojový kód modulu, získat dokumentaci spojenou s tímto modulem, přečíst podpis metody funkce v Pythonu a mnoho dalšího. Tímto způsobem můžeme vytvářet projekty, které produkují dokumentaci živého kódu pro naše vlastní projekty. To znamená, že k našemu kódu v Pythonu musíme pouze učinit nezbytné komentáře a zbytek práce můžeme nechat na samotném Pythonu, aby pro nás vytvořil dokumentaci.
Pomocí ukázkového kódu
Abychom pochopili, jak funguje Python kontrolovat modul funguje, použijeme jednu z našich vlastních definic ukázkových kódů v Pythonu, která pouze demonstruje dědičnost v Pythonu a způsob, jakým jsou objekty vytvářeny. Podívejme se na ukázkový modul, který budeme používat ve zbytku tutoriálu zde:
def module_level_function (arg1, arg2 = 'default', * args):„“ „Jsem funkce na úrovni modulu.„“ „
local_var = arg1 * 2
návrat local_var
Osoba třídy (objekt):
"" "Definice pro třídu osob.„“ „
def __init __ (já, jméno):
já.jméno = jméno
def get_name (self):
"Vrátí název instance."
vrátit se.název
person_obj = Osoba ('sample_instance')
třída Student (Osoba):
"" "Toto je třída Student, dítě třídy Person.
„“ „
# Tato metoda není součástí třídy Person.
def do_something_else (self):
"" "Tady se dá dělat cokoli.".„“ „
def get_name (self):
„Přepíše verzi z třídy Person“
návrat 'Student (' + self.jméno + ')'
Definovali jsme ukázkový modul, abychom z něj mohli začít extrahovat zdrojový kód a další komponenty v dalších příkladech, které píšeme. Začněme.
Inspekční modul
Výše uvedený modul Python je uložen v souboru s názvem linuxhint.py ve stejném adresáři, kde budeme vytvářet naše nové skripty Pythonu. Můžeme zkontrolovat modul v Pythonu tak, že nejprve provedeme jeho import. Toto prohlášení o importu bude přítomno ve všech skriptech, které napíšeme, také v dalších částech. Zde je ukázkový program, pomocí kterého kontrolujeme náš modul:
kontrola importuimportovat linuxhint
pro jméno, data v inspekci.getmembers (linuxhint):
pokud jméno.začíná s('__'):
pokračovat
tisk(' : !r '.formát (jméno, data))
S tímto příkazem se vrátíme:
Modul pro kontrolu Pythonu
Výstup nám poskytuje podrobnosti o tom, kolik tříd, funkcí a objektů existuje v tomto modulu při spuštění skriptu.
Inspekce tříd v modulu
Výše uvedený příklad, který jsme ukázali, představil všechny podrobnosti modulu najednou. pokud chceme získat pouze informace týkající se tříd v modulu, můžeme získat stejné jako:
kontrola importuimportovat linuxhint
pro klíč, data v inspekci.getmembers (linuxhint, zkontrolujte.isclass):
tisk(' : !r '.formát (klíč, data))
Podívejme se na výstup tohoto příkazu:
Python zkontrolovat třídu modulu
Výstup je přesně stejný, pouze tentokrát byly na konzolu vytištěny pouze definice tříd.
Kontrola metod ve třídě
Metody jsou ty, které definují chování třídy v OOP a poskytují informace o tom, jak bude chování objektů změněno, když jsou na ně vyvolány metody. Z tohoto důvodu je důležité zdokumentovat všechny metody, které existují ve třídě nebo modulu. Můžeme získat informace související s metodou, jako je tato:
kontrola importuz pprint import pprint
importovat linuxhint
pprint (zkontrolovat.getmembers (linuxhint.Osoba, zkontrolujte.funkce))
S tímto příkazem se vrátíme:
Kontrola metody třídy
Výstup zobrazuje pouze definici metody pro každou přítomnou metodu.
Inspekce objektů třídy
Když se podíváte na to, kolik místa je obsazeno, když spustíme skript v Pythonu, je důležité vědět, kolik objektů pro třídu je vytvořeno pro danou třídu v programu. Abychom to věděli, můžeme také získat informace o objektech třídy v modulu:
kontrola importuz pprint import pprint
importovat linuxhint
osoba = linuxhint.Osoba (name = 'inspect_getmembers')
pprint (zkontrolovat.getmembers (osoba, zkontrolovat.ismethod))
Podívejme se na výstup tohoto příkazu:
Inspekční předměty třídy
To také vytiskne adresu paměti, kde tento objekt žije v průběhu tohoto programu.
Inspekce Docstring třídy
Dokumentační řetězec modulu je část, která ve skutečnosti informuje uživatele nebo vývojáře o tom, o čem je tento modul a jaké funkce poskytuje. S modulem inspect můžeme získat dokumentaci kompletního modulu, abychom jej mohli lépe dokumentovat. Podívejme se, jak můžeme extrahovat docstring pro třídu:
kontrola importuimportovat linuxhint
tisk („Osoba.__doc__: ')
tisk (linuxhint.Osoba.__doc__)
tisk()
print ('getdoc (Osoba):')
tisknout (zkontrolovat.getdoc (linuxhint.Osoba))
S tímto příkazem se vrátíme:
Získání Docstringu pro třídu
Inspekce Zdroj třídy
Nakonec vidíme, jak můžeme extrahovat také kompletní zdrojový kód třídy v programu Python. Toto je důležitá funkce a také nám pomáhá vytvářet dokumentační nástroje o modulu Pythonu. Podívejme se na příklad v akci:
kontrola importuimportovat linuxhint
tisknout (zkontrolovat.getsource (linuxhint.Student))
S tímto příkazem se vrátíme:
Získání zdrojového kódu třídy
Inspekce zdroje metody
Stejným způsobem jsme extrahovali zdrojový kód třídy, nyní extrahujeme zdrojový kód metody v našem programu Python:
kontrola importuimportovat linuxhint
tisknout (zkontrolovat.getsource (linuxhint.Student.get_name))
S tímto příkazem se vrátíme:
Získání zdroje metody ve třídě
Kontrola podpisu metody
Podpis metody poskytuje hluboký vhled o tom, co metoda dělá a jaký vstup vyžaduje. Poskytuje nám to sílu dokumentovat metodu lépe, protože dokumentace metody je neúplná, aniž bychom věděli, jaký vstup to vyžaduje. Zde je způsob, jak můžeme extrahovat informace související s podpisem metody:
kontrola importuimportovat linuxhint
tisknout (zkontrolovat.podpis (linuxhint.module_level_function))
S tímto příkazem se vrátíme:
Získání podpisu metody
Závěr
V této lekci jsme se podívali na to, jak můžeme využít modul kontroly Pythonu ke sledování zdrojového kódu a mnoha dalších interních funkcí programu Python. Přečtěte si více příspěvků založených na Pythonu zde.