inspect.getmembers()
works on objects,而你传递的是字符串。Python 不知道这些字符串包含文件名,也不会把这些文件名当作模块来导入。
你必须导入这些文件才能使inspect.getmembers()
发挥作用。因为你正在处理当前目录中的文件,所以你应该可以直接导入它们。
import importlib
for x in onlyfiles:
module = importlib.import_module(x)
for name, obj in inspect.getmembers(module):
if inspect.isclass(obj):
print obj
请注意inspect.getmembers()
接受第二个参数,这个谓词可以让你过滤该方法返回的内容。你可以在这里使用inspect.isclass()
作为谓词,而不是手动过滤。
for x in onlyfiles:
module = importlib.import_module(x)
for name, obj in inspect.getmembers(module, inspect.isclass):
print obj