为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

qq_遁去的一_1 2019-12-27 09:27:10
如何获得可迭代类中所有变量的列表?有点像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
查看完整描述

3 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

dir(obj)

为您提供对象的所有属性。您需要自己从方法等中过滤出成员:


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   

会给你:


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


查看完整回答
反对 回复 2019-12-27
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

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


vars(your_object)


查看完整回答
反对 回复 2019-12-27
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

>>> 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()这就是您要寻找的。


查看完整回答
反对 回复 2019-12-27
  • 3 回答
  • 0 关注
  • 3174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信