为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUX布斯 2019-09-18 14:44:34
我想迭代一个类中的方法,或者根据存在的方法以不同的方式处理类或实例对象。如何获取类方法列表?
查看完整描述

3 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

一个例子(列出optparse.OptionParser类的方法):


>>> from optparse import OptionParser

>>> import inspect

>>> 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>),

 ...

 ]

请注意,getmembers返回2元组的列表。第一项是成员的名称,第二项是值。


您还可以将实例传递给getmembers:


>>> parser = OptionParser()

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

...


查看完整回答
反对 回复 2019-09-18
?
BIG阳

TA贡献1859条经验 获得超6个赞

有一种dir(theobject)方法可以列出对象的所有字段和方法(作为元组)和inspect模块(作为代码编写),用文档列出字段和方法(在“”中)。


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


查看完整回答
反对 回复 2019-09-18
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

没有外部库的Python 3.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("__")]



查看完整回答
反对 回复 2019-09-18
  • 3 回答
  • 0 关注
  • 2483 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信