【发布时间】:2013-08-20 15:00:55
【问题描述】:
我有一个班级。在那个类中,我有一个功能。 在函数中,我有一个字符串变量,其中包含几个 python 函数的定义。
我希望从函数创建在变量中定义的函数,这样它们将在全局范围中创建。
在这个操作之后,我希望能够从全局范围调用新函数。
例如:
class MyClass:
def create_functions():
functions_to_create = """
def glob1():
return "G1"
def glob2():
return "G2"
"""
# ----> HERE IS THE MISSING PART, LIKE RUNNING exec in the global scope <----
# The following function should work:
def other_function_in_global_scope():
print "glob1: %s, glob2: %s" % (glob1(), glob2())
缺少的部分应该是什么?
提前致谢!!!
【问题讨论】:
-
很少推荐运行 exec,因为通常有更好的方法来设计代码,而且它还引入了潜在的非常容易的代码注入。你想用字符串函数名做什么?为什么将它们作为字符串而不只是对象?
-
@Zimm3r:我想给内部客户一个选项来编写一些我想在我的代码中使用的 python 代码覆盖。
-
这听起来不太好,让他们注入任意代码会带来安全风险。还有更好的方法,然后使用 exec 甚至注入字符串源代码。 (更新了一种方法)
标签: python