26 votos

¿Cómo puedo obtener el archivo actual, la clase actual, y el método actual con Python?

  • Nombre del archivo de donde se ejecuta el código de
  • Nombre de la clase desde donde se ejecuta el código de
  • Nombre del método (atributo de la clase), donde el código se está ejecutando

29voto

Andrew Hare Puntos 159332

Aquí está un ejemplo de cada uno:

from inspect import stack

class Foo:
    def __init__(self):
    	print __file__
    	print self.__class__.__name__
    	print stack()[0][3]

f = Foo()

9voto

mtasic85 Puntos 1223
import sys

class A:
    def __init__(self):
        print __file__
        print self.__class__.__name__
        print sys._getframe().f_code.co_name

a = A()

5voto

SpliFF Puntos 21945
self.__class__.__name__  # name of class i'm in

para el resto de la sys y seguimiento de los módulos

http://docs.python.org/library/sys.html http://docs.python.org/library/trace.html

Algo más de información: http://mail.python.org/pipermail/python-list/2001-August/100181.html y http://www.dalkescientific.com/writings/diary/archive/2005/04/20/tracing_python_code.html

¿usted quiere para los informes de errores debido a que la traza módulo puede manejar que:

http://docs.python.org/library/traceback.html

4voto

Daniel Roseman Puntos 199743

Ser muy cuidadoso. Considere la posibilidad de:

class A:
    pass

B = A
b = B()

¿Qué es el 'nombre de la clase' b aquí? Es a o B? Por qué?

El punto es, usted no necesita saber o de atención. Un objeto es lo que es: su nombre es muy poco útil.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X