猿问
下载APP

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

我想迭代一个类中的方法,或者根据存在的方法以不同的方式处理类或实例对象。如何获取类方法列表?



HUX布斯
浏览 60回答 3
3回答

慕娘9325324

一个例子(列出optparse.OptionParser类的方法):>>> from optparse import OptionParser>>> import inspect>>> inspect.getmembers(OptionParser, predicate=inspect.ismethod)[([('__init__', <unbound method OptionParser.__init__>),...&nbsp;('add_option', <unbound method OptionParser.add_option>),&nbsp;('add_option_group', <unbound method OptionParser.add_option_group>),&nbsp;('add_options', <unbound method OptionParser.add_options>),&nbsp;('check_values', <unbound method OptionParser.check_values>),&nbsp;('destroy', <unbound method OptionParser.destroy>),&nbsp;('disable_interspersed_args',&nbsp; <unbound method OptionParser.disable_interspersed_args>),&nbsp;('enable_interspersed_args',&nbsp; <unbound method OptionParser.enable_interspersed_args>),&nbsp;('error', <unbound method OptionParser.error>),&nbsp;('exit', <unbound method OptionParser.exit>),&nbsp;('expand_prog_name', <unbound method OptionParser.expand_prog_name>),&nbsp;...&nbsp;]请注意,getmembers返回2元组的列表。第一项是成员的名称,第二项是值。您还可以将实例传递给getmembers:>>> parser = OptionParser()>>> inspect.getmembers(parser, predicate=inspect.ismethod)...

BIG阳

有一种dir(theobject)方法可以列出对象的所有字段和方法(作为元组)和inspect模块(作为代码编写),用文档列出字段和方法(在“”中)。因为可以在Python中调用所有(甚至是字段),所以我不确定是否有内置函数仅列出方法。如果您通过的对象dir是可调用的,您可能想尝试。

一只名叫tom的猫

没有外部库的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("__")]
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答