クラス内のメソッドを反復処理したり、存在するメソッドに基づいてクラスまたはインスタンス オブジェクトを異なる方法で処理したりしたいと考えています。クラス メソッドのリストを取得するにはどうすればよいですか?
以下も参照:
ベストアンサー1
例 (クラスのメソッドの一覧optparse.OptionParser
):
>>> from optparse import OptionParser
>>> import inspect
#python2
>>> inspect.getmembers(OptionParser, predicate=inspect.ismethod)
[([('__init__', <unbound method OptionParser.__init__>),
...
('add_option', <unbound method OptionParser.add_option>),
('add_option_group', <unbound method OptionParser.add_option_group>),
('add_options', <unbound method OptionParser.add_options>),
('check_values', <unbound method OptionParser.check_values>),
('destroy', <unbound method OptionParser.destroy>),
('disable_interspersed_args',
<unbound method OptionParser.disable_interspersed_args>),
('enable_interspersed_args',
<unbound method OptionParser.enable_interspersed_args>),
('error', <unbound method OptionParser.error>),
('exit', <unbound method OptionParser.exit>),
('expand_prog_name', <unbound method OptionParser.expand_prog_name>),
...
]
# python3
>>> inspect.getmembers(OptionParser, predicate=inspect.isfunction)
...
2 組のリストが返されることに注意してくださいgetmembers
。最初の項目はメンバーの名前、2 番目の項目は値です。
インスタンスを渡すこともできますgetmembers
:
>>> parser = OptionParser()
>>> inspect.getmembers(parser, predicate=inspect.ismethod)
...