Áttekintés
Elgondolkozott már azon, hogy milyen jó lenne hatalom megszerezni valamilyen más Python modul forráskódját a saját programjában? Ez olyan ötleteket és lehetőségeket nyit meg, mint például egy modul forráskódjának feldolgozása, a docstring megszerzése, a dokumentumok automatikus elkészítése egy kódrész számára. Hadd mondjam el, hogy ez 100% -osan lehetséges a Python-szal megvizsgálni modul.
Python ellenőrző modul
Piton megvizsgálni modul lehetővé teszi számunkra, hogy megvizsgáljuk egy futó program objektumait, megszerezzük a modul forráskódját, megszerezzük az adott modulhoz tartozó docstringet, elolvassuk egy függvény metódus aláírását a Pythonban és még sok minden mást. Így olyan projekteket készíthetünk, amelyek élő kóddokumentációt készítenek saját projektjeinkhez. Ez azt jelenti, hogy csak szükséges észrevételeket kell tennünk a Python-kódunkról, és a munka többi részét magára a Pythonra hagyhatjuk, hogy elkészítse nekünk a dokumentációt.
Mintakód használata
Hogy megértsük, hogy a Python megvizsgálni A modul működik, a saját mintakóddefiníciónk egyikét fogjuk használni a Pythonban, amely csak megmutatja az öröklődést a Pythonban és az objektumok elkészítését. Nézzük meg azt a mintamodult, amelyet az oktatóanyag további részében fogunk használni:
def module_level_function (arg1, arg2 = 'alapértelmezett', * args):"" "Modul szintű függvény vagyok."" "
helyi_var = arg1 * 2
return local_var
osztály Személy (tárgy):
"" "A Person osztály meghatározása."" "
def __init __ (saját, név):
maga.név = név
def get_name (self):
"Visszaadja a példány nevét."
visszatérő én.név
person_obj = Személy ('minta_instance')
osztályos tanuló (fő):
"" "Ez a Diák osztály, a Személy osztály gyermeke.
"" "
# Ez a módszer nem része a Személy osztálynak.
def do_something_else (self):
"" Itt bármit meg lehet tenni."" "
def get_name (self):
"A Személy osztály verziójának felülírása"
return 'Student (' + én.név + ')'
Meghatároztunk egy minta modult, hogy a későbbi, általunk írt példákban megkezdhessük a forráskód és más komponensek kibontását. Kezdjük el.
Ellenőrző modul
A fenti Python modult egy fájl nevű fájlba menti linuxhint.py ugyanabban a könyvtárban, ahol elkészítjük az új Python szkriptjeinket. A Python modulját úgy ellenőrizhetjük, hogy először importálunk egy fájlt. Ez az importálási nyilatkozat minden szkriptben jelen lesz, amelyet a későbbi szakaszokban is írunk. Itt van egy példa program, amellyel megvizsgáljuk a modulunkat:
importellenőrzésimport linuxhint
név, adat az ellenőrzés során.getmembers (linuxhint):
ha név.startswith ('__'):
folytatni
print (': !r '.formátum (név, adat))
Íme, amit ezzel a paranccsal kapunk vissza:
Python ellenőrző modul
A kimenet részleteket ad arról, hogy hány osztály, függvény és objektum létezik ebben a modulban a parancsfájl futtatásakor.
Osztályok ellenőrzése modulban
A fenti példában bemutattuk a modul összes részletét egyszerre. ha csak a modulban lévő osztályokhoz kapcsolódó információkat szeretnénk megszerezni, akkor megegyezhetünk:
importellenőrzésimport linuxhint
kulcsért, az ellenőrzés alatt álló adatokért.tagok (linuxhint, inspect.isclass):
print (': !r '.formátum (kulcs, adat))
Lássuk a parancs kimenetét:
A Python ellenőrzi a modul osztályát
A kimenet pontosan ugyanaz, csak ezúttal csak az osztálydefiníciókat nyomtatták ki a konzolra.
Módszerek ellenőrzése egy osztályban
A módszerek azok, amelyek meghatározzák egy osztály viselkedését az OOP-kban, és információkat nyújtanak arról, hogy az objektumok viselkedése hogyan módosul, amikor a módszereket meghívják. Ezért fontos dokumentálni az osztályban vagy modulban létező összes módszert. Ilyen módszerrel kapcsolatos információkat kaphatunk:
importellenőrzéspprintből import pprint
import linuxhint
pprint (ellenőrizze.tagok (linuxhint.Személy, ellenőrizze.isfunction))
Íme, amit ezzel a paranccsal kapunk vissza:
Osztály módszerének ellenőrzése
A kimenet csak az egyes jelen lévő módszerek definícióját jeleníti meg.
Egy osztály tárgyainak ellenőrzése
Ha átgondolja, mekkora helyet foglal el, amikor Python szkriptet futtatunk, fontos tudni, hogy az osztályban hány objektum van példányosítva az osztályhoz egy programban. Ennek ismeretében információkat kaphatunk egy osztály objektumairól a modulban is:
importellenőrzéspprintből import pprint
import linuxhint
személy = linuxhint.Személy (név = 'inspect_getmembers')
pprint (ellenőrizze.tagok (személy, ellenőrzés.metódus))
Lássuk a parancs kimenetét:
Az osztály objektumainak ellenőrzése
Ez kinyomtatja a memória címet is, ahol ez az objektum él a program során.
Egy osztály tanításának ellenőrzése
A modul parancsírozása az a rész, amely valóban tájékoztatja a felhasználót vagy a fejlesztőt arról, hogy miről szól ez a modul és milyen szolgáltatásokat nyújt. Az ellenőrző modullal megkaphatjuk a teljes modul docstringjét, hogy jobban dokumentáljuk. Lássuk, hogyan tudjuk kibontani a docstringet egy osztály számára:
importellenőrzésimport linuxhint
print ('Személy.__doc__: ')
nyomtatás (linuxhint.Személy.__doc__)
nyomtatás()
print ('getdoc (Személy):')
nyomtatás (ellenőrzés.getdoc (linuxhint.Személy))
Íme, amit ezzel a paranccsal kapunk vissza:
Docstring megszerzése az órára
Egy osztály forrásának ellenőrzése
Végül láthatjuk, hogyan lehet kibontani egy osztály teljes forráskódját egy Python programban is. Ez fontos funkció, valamint segítséget nyújt a Python modul dokumentációs eszközeinek felépítésében. Lássunk egy példát a műveletben:
importellenőrzésimport linuxhint
nyomtatás (ellenőrzés.getource (linuxhint.Diák))
Íme, amit ezzel a paranccsal kapunk vissza:
Az osztály forráskódjának megszerzése
A módszer forrásának ellenőrzése
Ugyanúgy, ahogy kinyertük egy osztály forráskódját, most kivonjuk egy módszer forráskódját a Python programunkba:
importellenőrzésimport linuxhint
nyomtatás (ellenőrzés.getource (linuxhint.Diák.get_name))
Íme, amit ezzel a paranccsal kapunk vissza:
A módszer forrásának megszerzése egy osztályban
Ellenőrzési módszer aláírása
A módszer aláírása mély betekintést nyújt abba, hogy mit csinál a módszer és milyen bemenetre van szükség. Erőt biztosít számunkra a módszer jobb dokumentálásához, mert a módszer dokumentálása hiányos anélkül, hogy tudnánk, milyen bemenetre van szükség. Így nyerhetjük ki a metódus aláírásához kapcsolódó információkat:
importellenőrzésimport linuxhint
nyomtatás (ellenőrzés.aláírás (linuxhint.modul_szint_funkció))
Íme, amit ezzel a paranccsal kapunk vissza:
A módszer aláírásának megszerzése
Következtetés
Ebben a leckében megvizsgáltuk, hogyan használhatjuk a Python inspect modult a forráskód és a Python program sok más belső szolgáltatásának megtekintésére. További Python alapú bejegyzéseket itt olvashat.