python3 内置了一个模块 inspect,通过该模块可以查询到一个类对象中的成员(包含函数、字段等)
举个栗子:
import inspect
class Test():
def promo1(self):
pass
def promo2(self):
pass
def promo3(self):
pass
if __name__ == "__main__":
promos = [func for name,func in inspect.getmembers(Test,inspect.isfunction)]
print(promos)
上面最后输出的结果是Test这个类下面的所有函数对象,通过inspect.isfuncion指定只拿出函数,而不拿出别的。
可以看到,可以传入其它条件获取指定类型的对象。
应用:
1. 选择最优策略
可以将所有的策略执行过程(函数)都放到一个类中,通过inspect获取到所有的函数,每个都执行一遍,获取结果,选出最优的结果,
这样可以让代码可读性更高。
2. 多条件过滤
可以将多个过滤方法写到一个类中,通过inspect获取到所有的函数,每个都执行一遍,一行代码即可实现多个过滤条件。