Liste des informations sur les arguments de méthode pour les classes et les modules en Python

Au travail, j'avais besoin de lister tous les arguments de méthode appartenant à un module Python, alors je l'ai recherché. Je pense que c'est une tâche très spécifique, mais au lieu d'un mémo (^ _ ^;)

politique

Recherchez dans les méta-informations des classes et des modules de niveau supérieur avec le module inspect.

Détails du module inspect-> https://docs.python.org/2/library/inspect.html

inspect.getmembers(object)

Renvoie tous les membres appartenant à l'objet donné en argument dans une liste de la forme tuple ('nom', 'valeur').

inspect.getargspec(func)

Renvoie les informations d'argument de la fonction donnée à l'argument au format tuple (args, varargs, mots-clés, valeurs par défaut). args contient une liste d'arguments.

Voici un exemple.

Un exemple est le client python de Trove, qui est un DBaaS openstack. (Je voulais vérifier tous les arguments de l'I / F qui émet l'API à trove.)

troveclient.v1.client.Client Structure qui a des instances de différentes classes dans la variable d'instance de la classe de Voici le code pour vérifier les arguments de méthode que chaque instance a

import inspect
import troveclient.v1.client as dbcli


cli = dbcli.Client('', '', '')
cli_info = inspect.getmembers(cli)
for rds_info in cli_info:
    if rds_info[0][0] != "_":
        # Above if statement is for removing private class
        for info in inspect.getmembers(rds_info[1]):
            if inspect.ismethod(info[1]):
                if info[0][0] != "_":
                    # Above "if" statement is for removing private method
                    for arg in inspect.getargspec(info[1]).args:
                        print rds_info[0], info[0], arg

Vous trouverez ci-dessous le code pour enquêter sur l'interface CLI I / F getmembers récupère vraiment tous les attributs J'ai également obtenu les attributs déclarés dans le décorateur.

 import inspect
 import troveclient.v1.shell as rdscli

 for i in inspect.getmembers(rdscli):
     if inspect.isfunction(i[1]):
         for j in inspect.getmembers(i[1]):
             if j[0] == 'arguments':
                 # Above if statement is for retrieving decorators attribute. 
                 for k in j[1]:
                     required = 'y'
                     default = 'None'
                     helpstr = k[1].get('help')
                     if 'default' in k[1].keys():
                         required = 'n'
                         default = k[1].get('default')
                     if default is None:
                         default = 'None'
                     if helpstr is None:
                         helpstr = 'None'
                     if isinstance(default, list):
                         default = "[" + ",".join(default) + "]"
                     print(i[0] + "|" + k[0][0] + "|" + required +
                           "|" + default + "|" + helpstr)

Recommended Posts

Liste des informations sur les arguments de méthode pour les classes et les modules en Python
Différence entre list () et [] en Python
Méthode de concaténation de liste en python, différence entre list.extend () et opérateur «+»
Astuces utiles liées à la liste et aux instructions en Python
Les modules et packages en Python sont des "espaces de noms"
Différence entre append et + = dans la liste Python
Résumé des modules et des classes dans Python-TensorFlow2-
Grammaire de méthode instantanée pour Python et Ruby (étude)
[Hikari-Python] Chapitre 09-02 Classes (Création et instanciation de classes)
Liste triée en Python
Liste des modules python
Liste triée en Python
Liste de filtres en Python
Paquets et modules Python
Méthode Simplex (méthode unique) en Python
La chose semblable à une recherche de liste en Python
Méthode privée en python
Janken Poi en Python pour les débutants (réponses et explications)
Implémentation de List et Bool en Python et SQLite3 (note personnelle)
Liste des bibliothèques Python pour les data scientists et les data ingénieurs
[Python] Pas de valeur pour l'argument lui-même dans un appel de méthode non lié
[python] Récupère la liste des classes définies dans le module
Préférences pour jouer à Wave dans Python PyAudio et PortAudio
Problèmes et contre-mesures pour le débordement de la binarisation d'Otsu en Python
List, méthode pour les ressources imbriquées dans le framework Django REST
[Python] Comment trier un dict dans une liste et une instance dans une liste
Recherche récursive de fichiers et de répertoires en Python et sortie
Code python de la méthode k-means super simple
Liste Python, pour instruction, dictionnaire
Apprenez à connaître les packages et les modules Python
[Python] Créer une liste de dates et d'heures pour une période spécifiée
En Python, les éléments de la liste sont triés et sortis sous forme d'éléments et de multiples.
[Python] Comment supprimer des lignes et des colonnes dans une table (liste des options de méthode de dépôt)
Techniques de tri en Python
Conseils pour coder courts et faciles à lire en Python
Classe Python pour apprendre avec la chimioinfomatique
Méthode d'écriture pratique lors de l'ajout continu à la liste en Python
Pile et file d'attente en Python
Analysez l'API Researchmap avec Python et créez automatiquement un fichier Word pour la liste des succès
Liste Python et tapples et virgules
Problèmes et solutions à la demande de MySQL db dans Python 3
Notation et générateur d'inclusion de liste Python
Méthode de Newton en C ++, Python, Go (pour comprendre les objets de fonction)
[Python / PyQ] 4. liste, pour instruction
Unittest et CI en Python
#List Python pour les super débutants
Suppression des substitutions de méthode en Python
Obtenir des éléments de liste en Python
Tracer des informations géographiques en Python
À propos de "for _ in range ():" de python
Liste des solveurs et modélisateurs de conception linéaire (LP) disponibles en Python
Extraire plusieurs doublons de liste en Python
Rechercher les fuites de mémoire dans Python
Paquets qui gèrent le MIDI avec Python midi et pretty_midi
[python] Gérer les fonctions dans une liste
Sortie de la liste du vendredi Premium 2017 en Python