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

时间:2018-02-12 15:28:58

标签: python

我有一个名为foo.py的模块,另一个模块bar.py将函数加载到其命名空间中。如何使用字符串foo_为foo.py中的所有函数添加前缀。一个例子:

foo.py:

def func1():
  return "hello"

def func2():
  return "world"

bar.py:

from foo import *

def do_something():
  return foo_func1()

1 个答案:

答案 0 :(得分:1)

你在找这样的东西吗?

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])

编辑(抱歉,完全错过了这个问题)

你可以简单地使用

import foo

然后使用:

调用函数
foo.funct1()  # hello
foo.funct2()  # world