Python>>> Introspection
sebsauvage
-
2 avril 2002 à 15:04
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 -
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 -
L'un des points forts de Python, c'est sa possibilité d'introspection.
En plus de la documentation (au format HTML ou CHM), il est possible d'examiner pendant l'exécution d'un programme tous les objets Python, y compris leur documentation.
*** Par exemple, pour afficher la documentation d'une méthode:
>>> maliste = [2,5] # On créé une liste
>>> print maliste.append.__doc__
L.append(object) -- append object to end
>>> print maliste.insert.__doc__
L.insert(index, object) -- insert object before index
*** De quel type est l'objet maliste ?
>>> print type(maliste)
<type 'list'>
*** Pour afficher tous les attributs et méthodes d'un objet:
>>> print dir(maliste)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__repr__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
*** La même chose pour un fichier :
>>> fichier = open('toto.txt','w') # On ouvre un fichier en écriture
>>> print dir(fichier)
['__class__', '__delattr__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__repr__', '__setattr__', '__str__', 'close', 'closed', 'fileno', 'flush', 'isatty', 'mode', 'name', 'read', 'readinto', 'readline', 'readlines', 'seek', 'softspace', 'tell', 'truncate', 'write', 'writelines', 'xreadlines']
>>> print fichier.read.__doc__
read([size]) -> read at most size bytes, returned as a string.
If the size argument is negative or omitted, read until EOF is reached.
*** La liste de tous les objets courants (de notre session):
>>> print dir()
['__builtins__', '__doc__', '__name__', 'fichier', 'maliste']
__builtins__ contient toutes les méthodes standard (de base)
__doc__ contient la doc du module actuel (vide puisque nous sommes en train de créer un nouveau module)
__name__ contient le nom du module actuel (vide puisque nous ne lui avons pas donné de nom)
Et on y retrouve bien entendu maliste et fichier, les 2 objets que nous avons créé.
Cela nous donne la possibilité d'examiner le contenu (attributs et méthodes) de n'importe quel objet au moment de l'exécution, ainsi que tous les objets qu'il contient.
En plus de la documentation (au format HTML ou CHM), il est possible d'examiner pendant l'exécution d'un programme tous les objets Python, y compris leur documentation.
*** Par exemple, pour afficher la documentation d'une méthode:
>>> maliste = [2,5] # On créé une liste
>>> print maliste.append.__doc__
L.append(object) -- append object to end
>>> print maliste.insert.__doc__
L.insert(index, object) -- insert object before index
*** De quel type est l'objet maliste ?
>>> print type(maliste)
<type 'list'>
*** Pour afficher tous les attributs et méthodes d'un objet:
>>> print dir(maliste)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__repr__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
*** La même chose pour un fichier :
>>> fichier = open('toto.txt','w') # On ouvre un fichier en écriture
>>> print dir(fichier)
['__class__', '__delattr__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__repr__', '__setattr__', '__str__', 'close', 'closed', 'fileno', 'flush', 'isatty', 'mode', 'name', 'read', 'readinto', 'readline', 'readlines', 'seek', 'softspace', 'tell', 'truncate', 'write', 'writelines', 'xreadlines']
>>> print fichier.read.__doc__
read([size]) -> read at most size bytes, returned as a string.
If the size argument is negative or omitted, read until EOF is reached.
*** La liste de tous les objets courants (de notre session):
>>> print dir()
['__builtins__', '__doc__', '__name__', 'fichier', 'maliste']
__builtins__ contient toutes les méthodes standard (de base)
__doc__ contient la doc du module actuel (vide puisque nous sommes en train de créer un nouveau module)
__name__ contient le nom du module actuel (vide puisque nous ne lui avons pas donné de nom)
Et on y retrouve bien entendu maliste et fichier, les 2 objets que nous avons créé.
Cela nous donne la possibilité d'examiner le contenu (attributs et méthodes) de n'importe quel objet au moment de l'exécution, ainsi que tous les objets qu'il contient.
A voir également:
- Python>>> Introspection
- Citizen code python avis - Accueil - Outils
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
- Citizen code python solution - Forum Python
1 réponse
Fax
Messages postés
164
Date d'inscription
jeudi 1 avril 2004
Statut
Contributeur
Dernière intervention
16 novembre 2019
447
6 mai 2004 à 23:49
6 mai 2004 à 23:49
Document très intéressant !!!
Il mériterait une place dans la Base de connaissance CCM!
"A trop vouloir gagner, on finit par tout perdre..."
Il mériterait une place dans la Base de connaissance CCM!
"A trop vouloir gagner, on finit par tout perdre..."
7 mai 2004 à 10:05