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
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
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
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
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.