Module Python Inspecter

Module Python Inspecter

Aperçu

Je vous suis déjà demandé à quel point il serait cool d'avoir le pouvoir d'obtenir le code source d'un autre module Python dans votre propre programme? Cela ouvrira des idées et des portes à de nombreuses opportunités telles que le traitement du code source d'un module, obtient automatiquement sa documentation pour un morceau de code. Permettez-moi de vous dire, c'est 100% possible avec Python inspecter module.

Module Python Inspecter

Python inspecter Le module nous permet d'inspecter les objets d'un programme en cours d'exécution, d'obtenir le code source d'un module, d'obtenir le docstring associé à ce module, de lire la signature de la méthode d'une fonction dans Python et bien plus encore. De cette façon, nous pouvons créer des projets qui produisent une documentation de code en direct pour nos propres projets. Cela signifie que nous n'avons qu'à faire les commentaires nécessaires sur notre code Python et que nous pouvons laisser le reste du travail à Python lui-même pour produire la documentation pour nous.

En utilisant un exemple de code

Pour comprendre comment Python inspecter Module fonctionne, nous utiliserons l'une de nos propres exemples de définition de code dans Python qui démontre juste l'héritage dans Python et comment les objets sont fabriqués. Regardons le module d'échantillonnage que nous utiliserons dans le reste du tutoriel ici:

Def module_level_function (arg1, arg2 = 'default', * args):
"" "Je suis une fonction au niveau du module."" "
local_var = arg1 * 2
retourner local_var
Personne de classe (objet):
"" "Définition de la classe de personne."" "
def __init __ (self, nom):
soi.nom = nom
def get_name (self):
"Renvoie le nom de l'instance."
se retourner.nom
Person_obj = personne ('samptans_instance')
Élève de classe (personne):
"" "C'est la classe d'étudiant, classe d'enfant de personne.
"" "
# Cette méthode ne fait pas partie de la classe de personne.
def do_something_else (self):
"" "Tout peut être fait ici."" "
def get_name (self):
"Remplace la version de la classe de personne"
Retour 'Student (' + self.nom + ')'

Nous avons défini un exemple de module afin que nous puissions commencer à extraire le code source et d'autres composants de celui-ci dans des exemples ultérieurs que nous écrivons. Commençons.

Module d'inspection

Le module Python ci-dessus est enregistré dans un fichier appelé linuxhint.py Dans le même répertoire où nous ferons nos nouveaux scripts Python. Nous pouvons inspecter un module en python en faisant d'abord une importation pour cela. Cette instruction IMPORT sera présente dans tous les scripts que nous écrivons également dans les sections ultérieures. Voici un exemple de programme avec lequel nous inspectons notre module:

Inspecte d'importation
Importer Linuxhint
pour le nom, les données dans Inspecter.getMembers (Linuxhint):
Si le nom.commence avec('__'):
continuer
imprimer(' : !r '.format (nom, données))

Voici ce que nous récupérons avec cette commande:

Module Python Inspecter


La sortie nous fournit les détails du nombre de classes, de fonctions et d'objets dans ce module lorsque le script est exécuté.

Inspecter les cours dans un module

L'exemple ci-dessus que nous avons montré a présenté tous les détails d'un module à la fois. Si nous voulons obtenir uniquement les informations liées aux classes du module, nous pouvons obtenir la même chose que:

Inspecte d'importation
Importer Linuxhint
pour la clé, les données dans Inspecter.GetMembers (Linuxhint, inspecter.isClass):
imprimer(' : !r '.format (clé, données))

Voyons la sortie de cette commande:

Python Inspecter la classe du module


La sortie est exactement la même, seulement que cette fois, seules les définitions de classe ont été imprimées sur la console.

Inspection des méthodes dans une classe

Les méthodes sont celles qui définissent le comportement d'une classe en OOP. Il est dû à cette raison qu'il est important de documenter toutes les méthodes qui existent dans une classe ou un module. Nous pouvons obtenir des informations liées à une méthode comme celle-ci:

Inspecte d'importation
à partir de l'imprimée Pprint
Importer Linuxhint
pprint (inspecter.GetMembers (Linuxhint.Personne, inspecter.isfunction))

Voici ce que nous récupérons avec cette commande:

Inspecter une méthode de classe


La sortie affiche simplement la définition de la méthode de chaque méthode présente.

Inspecter les objets d'une classe

Lorsque vous vous introspectez sur la quantité d'espace occupée lorsque nous exécutons un script Python, il est important de savoir combien d'objets pour la classe sont instanciés pour la classe dans un programme. Pour le savoir, nous pouvons également obtenir des informations sur les objets d'une classe dans un module:

Inspecte d'importation
à partir de l'imprimée Pprint
Importer Linuxhint
personne = Linuxhint.Personne (name = 'inspect_getmembers')
pprint (inspecter.GetMembers (personne, inspecter.ismethod))

Voyons la sortie de cette commande:

Inspecter les objets de classe


Cela imprime également l'adresse mémoire où cet objet vit au cours de ce programme.

Inspecter docstring d'une classe

La docstring d'un module est la partie qui informe réellement un utilisateur ou un développeur que ce module est et quelles fonctionnalités. Avec le module Inspecter, nous pouvons obtenir le docstring d'un module complet pour mieux le documenter. Voyons comment nous pouvons extraire docstring pour une classe:

Inspecte d'importation
Importer Linuxhint
Imprimer ('personne.__doc__: ')
Imprimer (Linuxhint.Personne.__doc__)
imprimer()
print ('getDoc (personne):')
Imprimer (inspecter.getDoc (Linuxhint.Personne))

Voici ce que nous récupérons avec cette commande:

Obtenir docstring pour la classe

Inspecter la source d'une classe

Enfin, nous pouvons voir comment nous pouvons également extraire le code source complet d'une classe dans un programme Python. Il s'agit d'une fonctionnalité importante, et cela nous aide à créer des outils de documentation sur un module Python. Voyons un exemple en action:

Inspecte d'importation
Importer Linuxhint
Imprimer (inspecter.getSource (Linuxhint.Étudiant))

Voici ce que nous récupérons avec cette commande:

Obtenir le code source de classe

Inspecter la source d'une méthode

De la même manière que nous avons extrait le code source d'une classe, nous allons maintenant extraire le code source d'une méthode dans notre programme Python:

Inspecte d'importation
Importer Linuxhint
Imprimer (inspecter.getSource (Linuxhint.Étudiant.get_name))

Voici ce que nous récupérons avec cette commande:

Obtenir une source de méthode dans une classe

Inspection Méthode Signature

La signature d'une méthode fournit un aperçu profond de ce qu'une méthode fait et de la contribution qu'il faut. Il nous fournit le pouvoir de mieux documenter une méthode car la documentation d'une méthode est incomplète sans savoir quelle entrée prend-elle. Voici comment nous pouvons extraire les informations liées à une signature de méthode:

Inspecte d'importation
Importer Linuxhint
Imprimer (inspecter.Signature (Linuxhint.module_level_function)))

Voici ce que nous récupérons avec cette commande:

Obtenir la signature d'une méthode

Conclusion

Dans cette leçon, nous avons examiné comment nous pouvons utiliser le module Python Inspecter pour examiner le code source et de nombreuses autres fonctionnalités internes d'un programme Python. Lire la suite de messages basés sur Python ici.