2009
10.01

Python offre une panoplie de fonctions rendant ce langage très attrayant pour plusieurs développeurs et c’est un langage de choix que l’on retrouve dans plusieurs application 3d comme Softimage|XSI, Maya, Blender, Houdini, etc.
Il arrive dans certain cas qu’une fonction par-ci par-là manque au sein du langage – bien que ce soit rare – comme la fonction toString() avec JScript. Python n’a pas d’équivalent simple/direct et réussir à faire un équivalent n’est pas simple au premier abord. En fait le comportement manquant au sein de Python est de récupérer la source d’une fonction ou d’une classe comme JScript en exécutant maFonction.toString(). toString() va retourner la source en tant que String.

Pour se faire, Python embarque un module qui se nomme inspect. Ce module permet entre autre de récupérer la source d’un fichier .py (Il peut faire bien plus). Il y a une limitation avec cette méthode, la source doit être sur un disque dur. Cette solution ne peut pas fonctionner en ligne de commande.

La solution comme présenté en ce moment est bien moins élégante qu’un simple toString() pour récupérer la source d’une fonction, mais bien intégrer dans un module ou une fonction/classe le résultat serait le même. Le seul côté moins intéressant que je vois ce serait au niveau des performances ( dans le cas où ce serait important ).

def helloWorld():
    print('Eyyaa')
    return True

import inspect
source = inspect.getsourcelines(helloWorld)
for file in source:
    if getattr(file, '__iter__', False):
        for line in file:
            print(line)

1 comment so far

Add Your Comment