Python 从模块导入特定类型的所有元素
我想在模块中导入仅属于特定类型的对象 例如,要导入的模块是:Python 从模块导入特定类型的所有元素,python,types,import,python-import,python-importlib,Python,Types,Import,Python Import,Python Importlib,我想在模块中导入仅属于特定类型的对象 例如,要导入的模块是: #foo.py a=a()#类型(a)=a b=b()#类型(b)=b 现在我想从foo导入A类型的元素(即A) 显然,您可以导入所有foo,然后遍历它以检查类型。不过,我认为这并不理想 也许importlib中有什么东西可以促进这一点 编辑 (添加有关用例的更多信息。) 基本上,我正在尝试创建类似的东西,并希望为自定义魔法创建一个工具 用户将向decorator注册文件中的函数,decorator将返回特定类型的实例 然后,用户将
#foo.py
a=a()#类型(a)=a
b=b()#类型(b)=b
现在我想从foo
导入A
类型的元素(即A
)
显然,您可以导入所有foo
,然后遍历它以检查类型。不过,我认为这并不理想
也许importlib
中有什么东西可以促进这一点
编辑
(添加有关用例的更多信息。)
基本上,我正在尝试创建类似的东西,并希望为自定义魔法创建一个工具
用户将向decorator注册文件中的函数,decorator将返回特定类型的实例
然后,用户将在实例化时传递模块的路径
#user_file.py
#decorator返回特定类型的对象(例如`foo`)
@登记册
定义a():
...
def b():
...
然后类似的事情发生了:
#导入_file.py
类GetsRegisteredKeys:
定义初始化(自身,路径:列表):
对于路径中的路径:
#导入已注册的元素,即具有'foo'类型的元素。
grk=GetsRegisteredKeys(路径=['./用户_file.py'])
用户实际上不会调用GetsRegisteredKeys
。他们只是在别的地方的小路上经过
完全避免这种导入的替代设计是受欢迎的。如果您想这样做,只需将其本身放入一个函数中并这样调用即可 (我想这就是你想要做的,如果不是,请纠正我) 然后在另一个python文件中
import foo
a = foo.A()
b = foo.B()
foo显然是它的实际名称的占位符。Python中没有类似的内容。有一个很好的理由。您尝试这样做的事实表明,您的设计可能有问题(尽管由于信息有限,我无法对此进行更多说明),我知道在某些情况下这可能会起作用。不幸的是,它在我的车里不起作用。我在问题的编辑版本中添加了更多信息。
import foo
a = foo.A()
b = foo.B()