我在子模块db.db_1
中有一个名为prepared_db
的函数:
from spam import db
submodule_name = "db_1"
func_name = "prepare_db"
func = ...
如何通过上面上下文中的子模块名和函数名来获取函数?在
更新:
为了回应@histrio的回答,我可以验证他的代码是否适用于os
模块。但在这种情况下它不起作用。创建示例:
现在,可以正常导入:
>>> from spam.db.db_1 import prepare_db
>>> prepare_db()
prepare_db func
但是如果你动态地这样做,我会得到一个错误:
>>> getattr(getattr(db, submodule_name), func_name)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-9-1b6aa1216551> in <module>()
----> 1 getattr(getattr(db, submodule_name), func_name)
AttributeError: module 'spam.db.db_1' has no attribute 'prepared_db'
很简单。可以将模块视为对象。在
或者[只是为了好玩,不要那样做]
^{pr2}$更新
我想我已经想好了,您需要将函数添加到
__init__.py
文件中的__all__
变量中,这样就可以大致如下:在那之后,它应该可以正常工作了。在
相关问题 更多 >
编程相关推荐