bruno at modulix wrote: > Yves Glodt wrote: >> Yves Glodt wrote: >> >>> Hello list, >>> >>> I need to iterate over a class and get all her variable names and >>> values, e.g. considering this example: >>> >>> >>> class testclass: >>> var1 = 'ab' >>> var2 = 'cd' >>> var3 = 'ef' > > Take care, these are *class* variables, not instance variables. > >>> test = testclass() >>> >>> Then I wanna do sonmething like this: >>> >>> for name,value in test: >>> print name >>> print value >>> > (snip) >> sorry for selfreplying, but I found a solution: >> >> for key in dir(test): >> if '__' not in key: >> value = getattr(test,key) >> print key, value >> >> Does anything speak about this? > > 1/ dir() doesn't necessary returns all the attributes of an object: > """ > dir(...) > dir([object]) -> list of strings > > Return an alphabetized list of names comprising (some of) the attributes > of the given object, and of attributes reachable from it: > """ > > But I don't think this is a problem here. > > 2/ everything being an object, dir() also returns methods (a method > being a - callable - attribute of the object's class). > > If you're only interested in data attributes, you may want to try this: > > for key in dir(test): > if not key.startswith('__'): > value = getattr(test,key) > if not callable(value): > print key, value
This serves me well so far, thanks to you, Peter and Daniel for the suggestions! Yves (still amazed of the responsiveness of this list :-) > You can also check inspect.getmember() -- http://mail.python.org/mailman/listinfo/python-list