Вот пример каждого из них:
from inspect import stack class Foo: def __init__(self): print __file__ print self.__class__.__name__ print stack()[0][3] f = Foo()
import sys class A: def __init__(self): print __file__ print self.__class__.__name__ print sys._getframe().f_code.co_name a = A()
self.__class__.__name__ # name of class i'm in
для остальных системных и следовых модулей
http://docs.python.org/library/sys.html http://docs.python.org/library/trace.html
Дополнительная информация: https://mail.python.org/pipermail/python-list/2001-August/096499.html а также http://www.dalkescientific.com/writings/diary/archive/2005/04/20/tracing_python_code.html
Вы хотели, чтобы оно сообщало об ошибках, потому что модуль трассировки может обработать это:
http://docs.python.org/library/traceback.html
Будьте очень осторожны. Рассмотрим:
class A: pass B = A b = B()
Что такое «имя класса» b здесь? Это А или Б? Почему?
b
Дело в том, что вам не нужно знать или заботиться. Объект - это то, чем он является: его имя очень редко используется.