使用inspect
列出给定类的所有类方法的“最佳”方法是什么?如果我在inspect.isfunction
中使用getmembers
作为谓词,那就可以了。
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中运行它。
答案 0 :(得分:7)
如文档中所述,inspect.ismethod
将显示绑定方法。这意味着如果要检查其方法,则必须创建该类的实例。由于您正在尝试检查未实例化的类上的方法,因此您将获得一个空列表。
如果你这样做:
x = MyClass()
inspect.getmembers(x, predicate=inspect.ismethod)
你会得到方法。