关于reflection:使用getmembers(module,isfunction)时忽略python模块中的导入函数

Ignore imported functions in a python module when using getmembers(module, isfunction)

本问题已经有最佳答案,请猛点这里访问。

有没有方法可以忽略python模块中导入的函数?

使用以下module.py模块时:

1
2
3
4
5
6
7
8
9
10
11
from inspect import getmembers, isfunction
import foo

def boo():
   foo()

def moo():
   pass


funcs = [mem[0] for mem in getmembers(module, isfunction)]

funcs等于:['boo','moo', 'foo'](包括导入函数foo)

我只希望funcs包括['boo', 'moo']


您必须测试__module__属性;它是一个命名完整模块路径的字符串:

1
2
funcs = [mem[0] for mem in getmembers(module, isfunction)
         if mem[1].__module__ == module.__name__]