如何在不提及模块名称的情况下从包中的一个模块调用函数?

how to call function from one of the module inside a package without mentioning modules name?

提问人:bafly 提问时间:9/1/2023 最后编辑:bafly 更新时间:9/1/2023 访问量:30

问:

我在里面.但为了清楚起见,我已将我的函数移到了单独的模块中callMe()mypack.py

|mypack
  |__init__.py
  |mycalls.py
  |...

但我想保留它们在改变之前的称呼:

import mypack
mypack.callMe()

有正确的方法可以做到这一点吗?

我知道这可以通过使用 import all 来完成,但这是一个好的做法吗?__init__.py

from .mycalls import *
python 模块 命名空间

评论


答:

1赞 Gordian 9/1/2023 #1

虽然,我不太确定为什么这会有所帮助,或者在哪种用例中这可能是有益的,如果您坚持打电话,您可以简单地做:mypack.mycalls.*mypack.*

import mypack.mycalls as mypack

然后,您可以执行以下操作:

mypack.callMe()

评论

0赞 Gordian 9/1/2023
@bafly没有真正的“适当”方法。在将 mycalls 重构到 mypack 后保留引用是不寻常的。如果您需要保留原始调用,那么我建议修改 import 语句,正如我上面指出的那样。如果你的 mypack 是一个小包,你仍然可以在 init 方法中执行此操作,这将清理你的 import 语句和调用。mypack.callMe()