Piton

Python ellenőrző modul

Python ellenőrző modul

Á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és
import 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és
import 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és
pprintbő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és
pprintbő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és
import 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és
import 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és
import 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és
import 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.

A GameConqueror Cheat Engine használata Linux alatt
A cikk tartalmaz egy útmutatót a GameConqueror csaló motor Linux alatt történő használatáról. Sok olyan felhasználó, aki Windows-on játszik játékot, g...
A legjobb játékkonzol emulátorok Linuxhoz
Ez a cikk felsorolja a Linux számára elérhető népszerű játékkonzol-emulációs szoftvereket. Az emuláció egy szoftver-kompatibilitási réteg, amely játék...
A legjobb Linux-disztribútorok játékhoz 2021-ben
A Linux operációs rendszer hosszú utat tett meg eredeti, egyszerű, szerver alapú kinézetétől. Ez az operációs rendszer rendkívül javult az elmúlt évek...