Pregled
Jeste li se ikad zapitali kako bi bilo cool imati moć zapravo dobiti izvorni kod nekog drugog Python modula u svom programu? To će otvoriti ideje i vrata mnogim mogućnostima poput obrade izvornog koda modula, dobivanja njegove dokumentacije, automatske izrade dokumentacije za dio koda. Dopustite mi da vam kažem, ovo je 100% moguće kod Pythona pregledati modul.
Python modul za provjeru
Piton pregledati modul omogućuje nam pregled objekata pokrenutog programa, dobivanje izvornog koda modula, dobivanje docstringa pridruženog tom modulu, čitanje potpisa metode funkcije u Pythonu i još mnogo toga. Na taj način možemo graditi projekte koji proizvode vlastite kodne dokumente za vlastite projekte. To znači da moramo samo dati potrebne komentare na naš Python kod, a ostatak posla možemo prepustiti samom Pythonu da nam proizvede dokumentaciju.
Korištenje uzorka koda
Da bih razumio kako Python pregledati modul radi, koristit ćemo jednu vlastitu definiciju uzorka koda u Pythonu koja samo pokazuje nasljeđivanje u Pythonu i kako se izrađuju objekti. Pogledajmo primjer modula koji ćemo koristiti u ostatku tutorijala ovdje:
def module_level_function (arg1, arg2 = 'zadani', * args):"" "Ja sam funkcija na razini modula."" "
lokalni_var = arg1 * 2
vrati local_var
razred Osoba (objekt):
"" "Definicija za klasu Person."" "
def __init __ (ja, ime):
sebe.ime = ime
def get_name (self):
Msgstr "Vraća ime instance."
vratiti se.Ime
person_obj = Osoba ('sample_instance')
razred Student (osoba):
"" "Ovo je razred učenika, dijete razreda osobe.
"" "
# Ova metoda nije dio klase Person.
def do_something_else (self):
"" "Ovdje se sve može učiniti."" "
def get_name (self):
"Poništava verziju iz klase Person"
return 'Student (' + self.ime + ')'
Definirali smo uzorak modula kako bismo mogli početi izvlačiti izvorni kod i druge komponente iz njega u kasnijim primjerima koje pišemo. Započnimo.
Modul za inspekciju
Gornji Python modul sprema se u datoteku pod nazivom linuxhint.py u istom direktoriju gdje ćemo napraviti naše nove Python skripte. Možemo pregledati modul u Pythonu tako da ga prvo uvozimo. Ova izjava o uvozu bit će prisutna i u svim skriptama koje pišemo u kasnijim odjeljcima. Evo primjera programa pomoću kojeg pregledavamo naš modul:
uvoz pregledatiuvoz linuxhint
za ime, podaci u inspect.getmembers (linuxhint):
ako ime.počinje sa('__'):
nastaviti
ispis (': !r '.format (ime, podaci))
Evo što vraćamo ovom naredbom:
Python modul za provjeru
Izlaz nam daje detalje o tome koliko klasa, funkcija i objekata postoji u ovom modulu kada se skripta izvodi.
Pregled predavanja u modulu
Gornji primjer koji smo pokazali predstavio je sve detalje modula odjednom. ako želimo dobiti samo podatke koji se odnose na nastavu u modulu, možemo dobiti iste kao:
uvoz pregledatiuvoz linuxhint
za ključ, podaci u inspect.getmembers (linuxhint, pregledajte.isclass):
ispis (': !r '.format (ključ, podaci))
Pogledajmo izlaz za ovu naredbu:
Python inspekcija klase modula
Izlaz je potpuno isti, samo što su ovaj put na konzolu ispisane samo definicije klasa.
Pregled metoda u razredu
Metode su one koje definiraju ponašanje klase u OOP-ovima i pružaju informacije o tome kako će se ponašanje Objekata izmijeniti dok se metode pozivaju na njih. Iz tog je razloga važno dokumentirati sve metode koje postoje u klasi ili modulu. Možemo dobiti informacije povezane s metodom poput ove:
uvoz pregledatifrom pprint import pprint
uvoz linuxhint
otisak (pregledati.getmembers (linuxhint.Osoba, pregledaj.je u funkciji))
Evo što vraćamo ovom naredbom:
Uvid u nastavnu metodu
Izlaz samo prikazuje definiciju metode svake prisutne metode.
Pregled objekata klase
Kada proučite koliko prostora zauzima kada pokrenemo Python skriptu, važno je znati koliko je objekata za klasu instancirano za klasu u programu. Da bismo to znali, također u modulu možemo dobiti informacije o Objektima klase:
uvoz pregledatifrom pprint import pprint
uvoz linuxhint
osoba = linuxhint.Osoba (ime = 'inspect_getmembers')
otisak (pregledati.getmembers (osoba, pregledajte.ismethod))
Pogledajmo izlaz za ovu naredbu:
Pregled predmeta na nastavi
Ovo također ispisuje memorijsku adresu na kojoj živi ovaj objekt tijekom ovog programa.
Pregledavanje dokumentarne datoteke klase
Dokumentacija modula dio je koji zapravo obavještava korisnika ili programera o tome o čemu se radi u ovom modulu i koje značajke pruža. Pomoću modula inspekcije možemo dobiti docstring cjelovitog modula kako bismo ga bolje dokumentirali. Pogledajmo kako možemo izvući docstring za klasu:
uvoz pregledatiuvoz linuxhint
print ('Osoba.__doc__: ')
ispis (linuxhint.Osoba.__doc__)
ispis ()
print ('getdoc (Osoba):')
ispis (pregledati.getdoc (linuxhint.Osoba))
Evo što vraćamo ovom naredbom:
Dobivanje Docstringa za nastavu
Pregled izvora klase
Napokon, možemo vidjeti kako u Python programu možemo izvući i cjeloviti izvorni kôd klase. Ovo je važna značajka, kao i ovo što nam pomaže da izgradimo alate za dokumentaciju o Python modulu. Pogledajmo primjer na djelu:
uvoz pregledatiuvoz linuxhint
ispis (pregledati.dobiva izvor (linuxhint.Student))
Evo što vraćamo ovom naredbom:
Dobivanje izvornog koda klase
Provjera izvora metode
Na isti način na koji smo izdvojili izvorni kod klase, sada ćemo izvući izvorni kod metode u našem programu Python:
uvoz pregledatiuvoz linuxhint
ispis (pregledati.dobiva izvor (linuxhint.Student.get_name))
Evo što vraćamo ovom naredbom:
Dobivanje izvora metode u nastavi
Inspekcija potpisa metode
Potpis metode pruža dubok uvid u to što metoda radi i koji je ulaz potreban. Pruža nam moć boljeg dokumentiranja metode, jer je dokumentacija metode nepotpuna, a da se ne zna koji je ulaz potreban. Evo kako možemo izdvojiti informacije povezane s potpisom metode:
uvoz pregledatiuvoz linuxhint
ispis (pregledati.potpis (linuxhint.modul_razina_funkcija))
Evo što vraćamo ovom naredbom:
Dobivanje potpisa metode
Zaključak
U ovoj smo lekciji pogledali kako možemo koristiti Python inspect module za gledanje izvornog koda i mnogih drugih unutarnjih značajki Python programa. Ovdje pročitajte više postova temeljenih na Pythonu.