好的我知道你可以使用dir()方法列出模块中的所有内容,但有没有办法只查看该模块中定义的函数?例如,假设我的模块如下所示:
from datetime import date, datetime
def test():
return "This is a real method"
即使我使用inspect()过滤掉内置函数,我仍然会留下任何导入的东西。 E.g我会看到:
['date','datetime','test']
有没有办法排除进口?或者另一种方法来找出模块中定义的内容?
答案 0 :(得分:26)
你在找这样的东西吗?
import sys, inspect
def is_mod_function(mod, func):
return inspect.isfunction(func) and inspect.getmodule(func) == mod
def list_functions(mod):
return [func.__name__ for func in mod.__dict__.itervalues()
if is_mod_function(mod, func)]
print 'functions in current module:\n', list_functions(sys.modules[__name__])
print 'functions in inspect module:\n', list_functions(inspect)
编辑:将变量名称从'meth'更改为'func'以避免混淆(我们在处理函数,而不是方法)。
答案 1 :(得分:4)
以下内容如何:
grep ^def my_module.py
答案 2 :(得分:2)
您可以检查相关功能的__module__
属性。我说“函数”因为一个方法通常属于一个类; - )。
顺便说一句,一个班级实际上也有__module__
属性。
答案 3 :(得分:1)
python中的每个类都有一个__module__
属性。您可以使用其值来执行过滤。看看example 6.14 in dive into python
答案 4 :(得分:0)
python inspect模块可能就是你在这里寻找的。 p>
import inspect
if inspect.ismethod(methodInQuestion):
pass # It's a method