Aunque generalmente estoy de acuerdo en que inspect
es una buena respuesta, no se cumple cuando tu clase (y por lo tanto el método de clase) se definió en el intérprete.
Si usa dill.source.getsource
desde dill
, puede obtener la fuente de funciones y lambdas, incluso si se definen de forma interactiva. También puede obtener el código de métodos y funciones de clase enlazados o no definidos definidos en curries ... sin embargo, es posible que no pueda compilar ese código sin el código del objeto adjunto.
>>> from dill.source import getsource
>>>
>>> def add(x,y):
... return x+y
...
>>> squared = lambda x:x**2
>>>
>>> print getsource(add)
def add(x,y):
return x+y
>>> print getsource(squared)
squared = lambda x:x**2
>>>
>>> class Foo(object):
... def bar(self, x):
... return x*x+x
...
>>> f = Foo()
>>>
>>> print getsource(f.bar)
def bar(self, x):
return x*x+x
>>>
Para builtin
funciones o métodos, dill.source
no va a funcionar ... Sin embargo ...
Todavía no tenga que recurrir a usar su editor favorito para abrir el archivo con el código fuente en el mismo (como se sugiere en Otras respuestas). Hay un nuevo paquete llamado cinspect
que pretende poder ver el código fuente para builtins
.
Por favor, no llame a su variable 'next' porque sombrea el siguiente 'siguiente'. – Matthias
@Matthias, gracias. –