looping over all member variables of a class in python

python

Solution

dir(obj)

gives you all attributes of the object. You need to filter out the members from methods etc yourself:

class Example(object):
    bool143 = True
    bool2 = True
    blah = False
    foo = True
    foobar2000 = False

example = Example()
members = [attr for attr in dir(example) if not callable(getattr(example, attr)) and not attr.startswith("__")]
print members   

Will give you:

['blah', 'bool143', 'bool2', 'foo', 'foobar2000']

Problem

How do you get a list of all variables in a class thats iteratable? Kind of like locals(), but for a class ``` class Example(object): bool143 = True bool2 = True blah = False foo = True foobar2000 = False def as_list(self) ret = [] for field in XXX: if getattr(self, field): ret.append(field) return ",".join(ret) ``` this should return ``` >>> e = Example() >>> e.as_list() bool143, bool2, foo ```

Original source

Related problems