有没有办法在python模块中为所有函数添加前缀?

Is there a way to prefix all of the functions in a python module?

本问题已经有最佳答案,请猛点这里访问。

我有一个名为foo.py的模块,另一个模块bar.py将函数加载到它的名称空间中。如何在foo.py中的所有函数前面加上字符串foo_的前缀。一个例子:

PY.PY:

1
2
3
4
5
def func1():
  return"hello"

def func2():
  return"world"

bar.py:

1
2
3
4
from foo import *

def do_something():
  return foo_func1()


你在找这样的东西吗?

1
2
3
4
5
6
7
def do_something( i ):
    import foo
    f = getattr( foo, 'func'+str(i) )
    return f()

print( do_something(1) )  # hello
print( do_something(2) )  # world

可以使用oldfashion getattr函数通过字符串访问属性。这需要一个对象和一个string,您可以在运行时创建它。

docs: getattr(object, name[, default])

编辑(抱歉,完全误读了问题)

你可以简单地使用

1
import foo

然后调用函数:

1
2
foo.funct1()  # hello
foo.funct2()  # world