Carl Banks wrote: > alf wrote: > > Hi, > > is there a more elegant way to get o.__class__.__name__. For instance I > > would imagine name(o). > > def name_of_type(o): > return o.__class__.__name__ > > name_of_type(o) > > > Carl Banks > > P.S. name(o) suggests it's the name of the object, not the type > P.P.S. you could use type(o).__name__ but it doesn't work for old-style > classes
You mean it doesn't work for old-style instances; OTOH __class__ doesn't work for old style classes: >>> class X: pass ... >>> X.__class__ AttributeError: class X has no attribute '__class__' So to handle all cases, you'd have to go with: def typename(o): try: cls = o.__class__ except AttributeError: cls = type(o) return cls.__name__ # or for fully qualified names # return '%s.%s' % (cls.__module__, cls.__name__) George -- http://mail.python.org/mailman/listinfo/python-list