我正在尝试使用Python inspect模块获取类的所有方法。我知道我可以过滤inspect.getmembers
来执行相同的操作,但是,似乎将成员方法列为函数而不是显式列出方法。
我需要将它们列为方法,以便我可以检查它们绑定或属于哪个类。
静态方法和非静态方法都被列为“函数”对象,而不是“方法”对象。
class a:
def _foo(self):
self.bar()
def bar(self):
print(inspect.stack()[1])
def lol():
pass
>>> a.lol
<function a.lol at 0x109b9ad08>
>>> a.bar
<function a.bar at 0x109b9ac80>
>>> inspect.getmembers(a)
[..., ('_foo', <function a._foo at 0x10b90ebf8>), ('bar', <function a.bar at 0x10b90ec80>), ...]
我希望_foo,bar和lol方法显示为method
对象,而不是function
对象。