当前位置: 首页 > 面试题库 >

如何获取Python当前模块中所有类的列表?

单于飞鸣
2023-03-14
问题内容

我已经看到了很多人从一个模块中提取所有类的示例,通常是这样的:

# foo.py
class Foo:
    pass

# test.py
import inspect
import foo

for name, obj in inspect.getmembers(foo):
    if inspect.isclass(obj):
        print obj

太棒了

但是我无法找到如何从 当前 模块中获取所有类。

# foo.py
import inspect

class Foo:
    pass

def print_classes():
    for name, obj in inspect.getmembers(???): # what do I do here?
        if inspect.isclass(obj):
            print obj

# test.py
import foo

foo.print_classes()

这可能确实很明显,但是我什么也找不到。谁能帮我吗?


问题答案:

尝试这个:

import sys
current_module = sys.modules[__name__]

在您的情况下:

import sys, inspect
def print_classes():
    for name, obj in inspect.getmembers(sys.modules[__name__]):
        if inspect.isclass(obj):
            print(obj)

甚至更好:

clsmembers = inspect.getmembers(sys.modules[__name__], inspect.isclass)

因为inspect.getmembers()带谓语。



 类似资料:
  • 问题内容: 除了标准库,我想要类似的东西。其他无效的东西: -仅显示已加载的模块 -包含非标准库模块EDIT的路径,并且似乎在virtualenv中不起作用。 我想要此列表的原因是可以将其传递给http://docs.python.org/library/trace.html的或命令行选项 因此,最终,我想知道在使用或时如何忽略所有标准库模块。 编辑:我希望它在virtualenv内部工作。htt

  • 问题内容: 有没有办法在Python中返回当前目录中所有子目录的列表? 我知道您可以使用文件来执行此操作,但是我需要获取目录列表。 问题答案: 你是指直接子目录,还是树下的每个目录? 无论哪种方式,你都可以使用以下方法: 将为每个子目录生成一个元组。该三元组中的第一个条目是目录名称,因此 应该递归地给你所有的子目录。 请注意,元组中的第二个条目是该条目在第一个位置的子目录的列表,因此你可以改用它,

  • 问题内容: 我想获取python中内置模块名称的列表,以便可以测试函数的命名约定(下划线,CamelCase或mixedCase)的流行程度。 我知道有一个全局模块索引,但我想知道是否有一个字符串列表,它更易于使用:) 更新: 问题答案: 编译的模块名称在中。有关所有可导入模块,请参见。 干净地运行它们,以(仅)获取Python本身随附的模块。 请注意,“人气调查”将必然包括使用旧的,不鼓励使用的

  • 问题内容: 我的系统上安装了python模块,我希望能够看到其中提供了哪些函数/类/方法。 我想在每个函数上调用doc函数。在ruby中,我可以执行类似ClassName.methods之类的操作来获取该类上所有可用方法的列表。python中是否有类似的东西? 例如。就像是: 问题答案: 该模块。另请参阅模块,交互式解释器中的功能以及生成所需文档的命令行工具。你可以为他们提供希望查看其文档的课程。

  • 问题内容: 我变得好,老又怕,而且在这种情况下经常发生,我在查找导致问题的代码中存在哪些细微的错误时遇到了问题。 我的问题是:有没有办法获取当前Hibernate会话中每个对象的列表? 当我得到这个问题的答案时,我可能会解决当前的问题,但是无论如何,能够列出会话中的所有内容将在下次发生时大有帮助。 问题答案: Hibernate不会向公众公开其内部信息,因此您不会在公共API中找到要搜索的内容。但

  • 问题内容: 例如,当我想设置在 谢谢。 问题答案: 检查这其他的选择。