如何获得用户定义的方法名称?

问题描述 投票:1回答:1

我正在尝试从一个类中获取所有用户定义的方法名称,例如:

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 python-3.x python-3.7
1个回答
1
投票

没有外部库的Python 3.x答案(如inspect)

method_list = [func for func in dir(Foo) if callable(getattr(Foo, func))]
© www.soinside.com 2019 - 2024. All rights reserved.