gpt4 book ai didi

python - 使用 Python `inspect` 模块列出所有类成员

转载 作者:太空狗 更新时间:2023-10-30 02:18:56 25 4
gpt4 key购买 nike

使用 inspect 列出给定类的所有类方法的“最佳”方法是什么?如果我像这样在 getmembers 中使用 inspect.isfunction 作为谓词

,它会起作用
class MyClass(object):
def __init(self, a=1):
pass
def somemethod(self, b=1):
pass

inspect.getmembers(MyClass, predicate=inspect.isfunction)

返回

[('_MyClass__init', <function __main__.MyClass.__init>),
('somemethod', <function __main__.MyClass.somemethod>)]

但它不是应该通过 ismethod 工作吗?

 inspect.getmembers(MyClass, predicate=inspect.ismethod)

在这种情况下返回一个空列表。如果有人可以澄清发生了什么,那就太好了。我在 Python 3.5 中运行它。

最佳答案

如文档中所述,inspect.ismethod将显示绑定(bind)方法。这意味着如果你想检查它的方法,你必须创建一个类的实例。由于您正在尝试检查未实例化类的方法,因此您得到的是一个空列表。

如果你这样做:

x = MyClass()
inspect.getmembers(x, predicate=inspect.ismethod)

你会得到方法。

关于python - 使用 Python `inspect` 模块列出所有类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33204160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com