当前位置: 首页 > 面试题库 >

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

百里海超
2023-03-14
问题内容

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


问题答案:

一个示例(列出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)
...


 类似资料:
  • 问题内容: 我已经看到了很多人从一个模块中提取所有类的示例,通常是这样的: 太棒了 但是我无法找到如何从 当前 模块中获取所有类。 这可能确实很明显,但是我什么也找不到。谁能帮我吗? 问题答案: 尝试这个: 在您的情况下: 甚至更好: 因为带谓语。

  • 问题内容: 如何在Unix上从Python获取所有正在运行的进程的进程列表,其中包含命令/进程的名称和进程ID,以便可以过滤和终止进程。 问题答案: 在linux上,最简单的解决方案可能是使用外部命令: 在其他系统上,您可能必须将选项更改为。 不过,您可能要在和上运行。

  • 问题内容: 考虑以下: 如何获取列表中的元素数量? 问题答案: 该函数可与Python中的几种不同类型一起使用-内置类型和库类型。例如: 官方2.x文档在这里: 官方3.x文档在这里:

  • 问题内容: 我想获取python中内置模块名称的列表,以便可以测试函数的命名约定(下划线,CamelCase或mixedCase)的流行程度。 我知道有一个全局模块索引,但我想知道是否有一个字符串列表,它更易于使用:) 更新: 问题答案: 编译的模块名称在中。有关所有可导入模块,请参见。 干净地运行它们,以(仅)获取Python本身随附的模块。 请注意,“人气调查”将必然包括使用旧的,不鼓励使用的

  • 本文向大家介绍python链表类中获取元素实例方法,包括了python链表类中获取元素实例方法的使用技巧和注意事项,需要的朋友参考一下 1、append方法 向链表添加元素后。在链表中,不能通过索引来定位每个元素,只能在列表中定位。链表元素的.next方法需要被持续调用,以获得下一个元素,并最终获得最后一个元素。最后一个元素的.next属性中将指向新添加的元素。 2、get_position方法

  • 问题内容: 我想获取方法的调用者类,即 在方法栏中,我需要获取类名称,然后找到了该方法: 但是,即使是,当我尝试调用它时,Eclipse 也会说: 访问限制:由于必需的库C:\ Program Files \ Java \ jre7 \ lib \ rt.jar的限制,无法访问类型为Reflection的方法getCallerClass() 还有其他选择吗? 问题答案: 你可以生成堆栈跟踪并使用S