On 20 mayo, 12:10, "Gabriel Genellina" <[EMAIL PROTECTED]> wrote: > En Mon, 19 May 2008 10:54:05 -0300, Agustin Villena > <[EMAIL PROTECTED]> escribió: > > > On May 18, 4:31 pm, "Diez B. Roggisch" <[EMAIL PROTECTED]> wrote: > >> Agustin Villena schrieb: > > >> > is there anyway to show the class of amethodin anexception's > >> > traceback? > >> > I want to improve the line > >> > File "G:\dev\exceptions\sample.py", line 3, in foo > >> > to > >> > File "G:\dev\exceptions\sample.py", line 3, in Some.foo > > >> It should be. You can get a dictionary of the locals of anexception > >> stack frame, of which you could extract the self-parameter's class. > > > I digged on sys.exc_info() object and the traceback module and I > > could't figure how I can get the locals() of theexceptionstackframe > > Put this function in traceback.py, and replace the lines > name = co.co_name > with > name = guess_full_method_name(f) > everywhere. > Please read the docstring!!! > > def guess_full_method_name(frame): > """Guess classname.methodname for a given frame. > > Only a guess! > Assumes the frame belongs to an instancemethod > whose first argument is "self", or a classmethod > whose first argument is "cls". > Doesn't handle correctly any other situation. > Returns the class name of the object on which > the method was called, not the class where > the method was actually defined. > """ > cls_name = None > fun_name = frame.f_code.co_name > self = frame.f_locals.get('self', None) > if self is None: > cls = frame.f_locals.get('cls', None) > else: > cls = getattr(self, '__class__', None) > if cls is not None: > cls_name = getattr(cls, '__name__', None) > if cls_name is not None: > return '%s.%s' % (cls_name, fun_name) > return fun_name > > -- > Gabriel Genellina
Thanks! I'll try it Agustin -- http://mail.python.org/mailman/listinfo/python-list