1. ホーム
  2. python

[解決済み] Pythonでクラスのすべてのメンバ変数をループする

2022-08-27 20:09:51

質問

反復可能なクラス内のすべての変数のリストを取得する方法は?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

どのように解決するのですか?

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']