メンバーを検査してリストできるようにしたいクラスがあります。ただし、これをサブクラス化するだけなので (C++ ではこれは抽象クラスになります)、このメソッドがその子クラスのメンバーも返すようにします。
これはPythonで可能ですか、それとも良い考えですか? そしてフォローアップ、これはinspect
モジュールなしで可能ですか?
そのようです:
class A:
@staticmethod
def GetMembers():
return dict(vars(A))
class B(A):
FOO = 'foobar'
BAR = 'barfoo'
ただし、テストにより次のことが明らかになりました。
>>> A.GetMembers()
{'__module__': '__main__', '__doc__': None, 'GetMembers': <staticmethod object at 0x02219BB0>}
>>> B.GetMembers()
{'__module__': '__main__', '__doc__': None, 'GetMembers': <staticmethod object at 0x02219BB0>}
>>> dict(vars(B))
{'__module__': '__main__', 'FOO': 'foobar', 'BAR': 'barfoo', '__doc__': None}
私B.GetMembers()
は含めたいFOO
とBAR
思ってdict(vars(B))
います。