On Feb 16, 5:59 pm, Zack <[EMAIL PROTECTED]> wrote: > Zack wrote: > > Diez B. Roggisch wrote: > >> Zack schrieb: > >>> If I have a class static variable it doesn't show up in the __dict__ > >>> of an instance of that class. > > >>> class C: > >>> n = 4 > > >>> x = C() > >>> print C.__dict__ > >>> {'__module__': '__main__', '__doc__': None, 'n': 4} > >>> print x.__dict__ > >>> {} > > >>> This behavior makes sense to me as n is not encapsulated in x's > >>> namespace but what method can you use on x to find all available > >>> attributes for that class? > > >> x.__class__.__dict__ > > >> Diez > > > This would leave out any attributes of base classes. Not that I asked > > for that functionality in my original post but is there a way to get all > > attributes qualified by x. ? I see that I could walk the dict of x, > > x.__class__ and x.__class__.__bases__ until I exhaust the tree. But is > > there a built in method for doing this? > > I believe this accomplishes what I'm looking for. I'm not positive it is > correct or if there are cases I've missed. It would be nice if there is > a simple python builtin for finding the fully qualified dict. > > def fullDict(obj): > ''' > Returns a dict with all attributes qualified by obj. > > obj is an instance of a class > > ''' > d = obj.__dict__ > # update existing items into new items to preserve inheritance > tmpD = obj.__class__.__dict__ > tmpD.update(d) > d = tmpD > supers = list(obj.__class__.__bases__) > for c in supers: > tmpD = c.__dict__ > tmpD.update(d) > d = tmpD > supers.extend(c.__bases__) > return d
I know you're probably dumping this for dir(), but I should still warn you: This function modifies the class dictionary, which might not have been what you intended. -- http://mail.python.org/mailman/listinfo/python-list