如何获取 Python 类中的方法列表?

新手上路,请多包涵

我想遍历类中的方法,或者根据存在的方法以不同方式处理类或实例对象。我如何获得类方法的列表?

另见:

原文由 Purrell 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 261
2 个回答

一个示例(列出 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 返回一个二元组列表。第一项是成员的名称,第二项是值。

您还可以将实例传递给 getmembers

 >>> parser = OptionParser()
>>> inspect.getmembers(parser, predicate=inspect.ismethod)
...

原文由 codeape 发布,翻译遵循 CC BY-SA 4.0 许可协议

dir(theobject) 方法列出对象的所有字段和方法(作为元组)和检查模块(作为代码编写)列出字段和方法及其文档(在“””中) .

因为在 Python 中可能会调用所有内容(甚至字段),所以我不确定是否存在仅列出方法的内置函数。您可能想尝试通过 dir 获得的 对象 是否 可调用

原文由 Vincent Demeester 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏