Можно ли дополнить информацию [(…, модуль, функция, строка, …)], полученную с помощью inspect.stack(), именем класса, если функция это метод?
Андрей, Москва
Python 3.3
class Foo(object): def method(self): pass def action(callback): try: print "method class is", callback.im_class.__name__ except AttributeError: print "callback is not a method", foo = Foo() action(foo.method) action(Foo.method) action(action)
import sys class Foo(object): def method(self): 1/0 a = Foo() try: a.method() except Exception as e: exc_type, exc_value, exc_traceback = sys.exc_info() frame = exc_traceback.tb_next.tb_frame print("Class name:", frame.f_locals['self'].__class__.__name__)
fr2 = inspect.stack()[2] try: cls = fr2[0].f_locals['self'].__class__.__name__ except: cls = ''