我希望迭代类中的方法,或者根据存在的方法以不同的方式处理类或实例对象。如何获得类方法的列表?
另见:
发布于 2009-12-15 23:41:56
一个示例(列出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)
...注意,getmembers返回一个2元组的列表。第一项是成员的名称,第二项是值。
您还可以将一个实例传递给getmembers
>>> parser = OptionParser()
>>> inspect.getmembers(parser, predicate=inspect.ismethod)
...发布于 2009-12-15 23:49:18
有一个dir(theobject)方法来列出对象的所有字段和方法(作为一个元组),检查模块(作为编解码器写的)用它们的doc (in“”)列出字段和方法。
因为所有东西(甚至字段)都可能在Python中调用,所以我不确定是否有一个内置函数可以只列出方法。如果您通过dir获得的对象是可赎回,您可能想试一试。
发布于 2016-08-21 07:33:18
没有外部库的Python3.x应答
method_list = [func for func in dir(Foo) if callable(getattr(Foo, func))]被排除的结果:
method_list = [func for func in dir(Foo) if callable(getattr(Foo, func)) and not func.startswith("__")]https://stackoverflow.com/questions/1911281
复制相似问题