我正在尝试从一个类中获取所有用户定义的方法名称,例如:
class MyClass:
def __init__(self, param1, param2):
pass
def one_method(self):
pass
def __my_method_no_2(self, param2):
pass
def _my_method_no_3(self):
pass
到目前为止,我已经采用以下方法:
import inspect
[name for name, _ in inspect.getmembers(MyClass, inspect.isroutine)
if name not in {'__init_subclass__', '__subclasshook__'} and
getattr(MyClass, name).__qualname__.startswith(MyClass.__name__)]
输出:
['_MyClass__my_method_no_2', '__init__', '_my_method_no_3', 'one_method']
这是预期的输出,但是看起来“难看”,甚至不确定是否正确的方法
没有外部库的Python 3.x答案(如inspect)
method_list = [func for func in dir(Foo) if callable(getattr(Foo, func))]