必须评估字符串才能从模块访问类
我已经加载了我的模块之一
现在我将模块保存在变量中,但我想创建 mymodule 类的实例。事情是 - 我已经将模块名称作为字符串传递到我的脚本中。 所以我有一个包含模块的变量,并且我有模块名称,但作为字符串。
variable_containing_module.string_variable_with_ Correct_classname() 不起作用。因为它说模块中不存在“string_variable_with_ Correct_classname”这样的东西 - 因为它不评估字符串名称。我怎样才能这样做呢?
I've loaded one of my modules <module my_modules.mymodule from .../my_modules/mymodule.pyc> with __import__.
Now I'm having the module saved in a variable, but I'd like to create an instance of the class mymodule. Thing is - I've gotten the module name passed as string into my script.
So I've got a variable containing the module, and I've got the module name but as string.
variable_containing_module.string_variable_with_correct_classname() doesn't work. Because it says there is no such thing in the module as "string_variable_with_correct_classname" - because it doesn't evaluate the string name. How can I do so?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的问题是
__import__
是为导入内部使用而设计的,而不是真正供直接使用的。这种情况的一个症状是,当从包内部导入模块时,会返回顶级包而不是模块本身。有两种方法可以解决这个问题。首选方法是使用
importlib.import_module()
而不是直接使用__import__
。如果您使用的是不提供
importlib
的旧版 Python,那么您可以创建自己的辅助函数:另请参阅 http://bugs.python.org/issue9254
Your problem is that
__import__
is designed for use by the import internals, not really for direct usage. One symptom of this is that when importing a module from inside a package, the top-level package is returned rather than the module itself.There are two ways to deal with this. The preferred way is to use
importlib.import_module()
instead of using__import__
directly.If you're on an older version of Python that doesn't provide
importlib
, then you can create your own helper function:Also see http://bugs.python.org/issue9254