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

如何获得模块中定义但未导入的所有类?

赏成益
2023-03-14
问题内容

我已经看到了以下问题,但并不能完全让我知道我要去的地方:[如何获取Python当前模块中所有类的列表?](尝试这个:http://codingdict.com/questions/163282

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()带谓语。)

特别是,我不希望导入的类,例如,如果我具有以下模块:

from my.namespace import MyBaseClass
from somewhere.else import SomeOtherClass

class NewClass(MyBaseClass):
    pass

class AnotherClass(MyBaseClass):
    pass

class YetAnotherClass(MyBaseClass):
    pass

如果我使用clsmembers = inspect.getmembers(sys.modules[__name__], inspect.isclass)链接问题所建议的可接受答案,那么它将返回,MyBaseClass并且SomeOtherClass除此模块中定义的3之外。

我怎么能只得到NewClassAnotherClassYetAnotherClass


问题答案:

检查__module__类的属性,以找出定义在哪个模块中。



 类似资料:
  • 问题内容: 我的目录结构如下: 从导入模块。我尝试结合使用with ,但是使用该方法,我只能在using下直接导入所有子模块。我想让他们全都陷入困境。导入的所有子模块的最干净的方法是什么,以便可以从中访问? 编辑:对不起,我有点含糊。我想在运行时导入子模块,而不在中明确指定它们。我可以用来获取子模块名称(除非有人知道更好的方法),但是我不确定使用这些名称(或者返回的ImpImporters ?)导

  • 我想在任何目录的任何脚本中导入自定义编写的函数,就像在任何脚本中导入请求模块一样。我正在运行Ubuntu和Python 3.9 编辑:我按照本教程完成了我的要求-https://packaging.python.org/tutorials/packaging-projects/

  • 问题内容: 目录结构: module1.py: 我如何才能将所有模块从模块添加到主类而没有前缀(即像foo = fooBar()一样使用它们,而不是foo = my_modules.module1.fooBar())。 一个明显的决定是在main.py中编写如下内容: 但是我不想在创建新的moduleN时更改main.py。有解决方案吗? 我确实知道导入这样的类不是一个好主意,但是我对此仍然很好奇

  • 问题内容: 嗨,我是java反射域的新手,所以任何人都可以在这种问题情况下指导我。 我有一个名为 “ SomClass.java”* 的 类 ,它 导入了一个 名为 “ SomPackage.RefClass” 的包以及一些其他的Java库,例如java.lang ..等。 * 现在,我希望通过反思来了解在一类中定义的所有导入。 我只是想知道使用反射在类中定义的所有导入的列表。 我已经看到了问题发

  • 问题内容: 我有一个名为imutils.py的文件,只有一个定义,即abc(),它返回2个整数的总和。 现在,我想在单独的collab文件中使用此定义,但是我无法使用。 我使用的方法是先将文件imutils.py上传到驱动器,然后将其导入并使用定义。错误提示模块’imutils’没有属性’abc’ 要上传,我首先使用2种方法:首先,我使用驱动器GUI上传,然后我也使用代码尝试了上述方法。两种情况均

  • 我有一个HTTP拦截器来监视401错误和超时错误。当我在其中导入服务时。这是说服务是未定义的 我的HTTP拦截器 我的HTTP拦截器工厂 捕获块内的通知未定义。我不明白为什么会发生这种情况。 我对这件事很陌生。我做错了什么?