在python中遍历一个类的所有成员变量

如何获得可迭代类中所有变量的列表?有点像locals(),但是对于一个类


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)

这应该返回


>>> e = Example()

>>> e.as_list()

bool143, bool2, foo


qq_遁去的一_1
浏览 3175回答 3
3回答

茅侃侃

dir(obj)为您提供对象的所有属性。您需要自己从方法等中过滤出成员:class Example(object):    bool143 = True    bool2 = True    blah = False    foo = True    foobar2000 = Falseexample = Example()members = [attr for attr in dir(example) if not callable(getattr(example, attr)) and not attr.startswith("__")]print members   会给你:['blah', 'bool143', 'bool2', 'foo', 'foobar2000']

蛊毒传说

如果只希望变量(不带函数),请使用:vars(your_object)

天涯尽头无女友

>>> a = Example()>>> dir(a)['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__','__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__','__sizeof__', '__str__', '__subclasshook__', 'bool143', 'bool2', 'blah','foo', 'foobar2000', 'as_list']—如您所见,它为您提供了所有属性,因此您必须进行过滤。但基本上,dir()这就是您要寻找的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python