Kirk Strauser wrote: > Bruno Desthuilliers wrote: > >> Kirk Strauser wrote: > >>>>>> class foo(object): >>>>>> pass >>> how can I find its name, such as: >>> >>>>>> b = foo > >> I suppose you mean b = foo() ? > > Actually, I meant 'b = foo' in this case - I want to find the name of the > class that b references,
Ok. Could have been a typo, just wanted to make sure. >> The name of a class is in the attribute '__name__' of the class. The >> class of an object is in the attribute '__class__' of the object. > > I swear that didn't work earlier. Honest. :-) Not sure if it works for old-style classes... > OK, now for the good stuff. In the code below, how can I find the name of > the class that 'bar' belongs to: > >>>> class Foo(object): > ... def bar(self): > ... pass > ... >>>> b = Foo.bar >>>> dir(b) > ['__call__', '__class__', '__cmp__', '__delattr__', '__doc__', '__get__', > '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', > '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'im_class', 'im_func', > 'im_self'] >>> b.im_class <class '__main__.Foo'> >>> b.im_class.__name__ 'Foo' >>> >>>> b.__class__ This will give you the class of b itself. Remember that in Python, everything and it's sister is an object - including functions, methods, classes and modules. In this case, b is a method object - IOW a descriptor that wraps a function object. -- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')])" -- http://mail.python.org/mailman/listinfo/python-list