考虑一个Python模块fmod.py
:
def f(x):
print(x)
def g():
f("g")
现在g()
函数应该移动到gmod.py
:
import fmod
def g():
fmod.f("g")
"保持"fmod.g()
可用于向后兼容的最佳方法是什么?
尝试 a(
from gmod import g
def f(x):
print(x)
由于周期性导入,这将不起作用:来自其他地方的import gmod
失败。
尝试 b(
import gmod
def f(x):
print(x)
g = gmod.g
由于同样的问题,这仍然不起作用。
尝试 c(
def f(x):
print(x)
def g(*args, **kwargs):
import gmod
return gmod.g(*args, **kwargs)
我认为这有效,但相当复杂。
有没有更好的方法?
您可以使用最后一个选项,也可以通过以下方式编辑__init__.py
文件:
import fmod
import gmod
fmod.g = gmod.g
然后,您将能够执行以下操作:
import fmod
fmod.g('x') #@UndefinedVariable