exec方法中的问题

时间:2010-05-28 06:27:40

标签: python

我有两个python文件file1.py和file2.py。 我使用exec()来获取file2.py中定义的方法/变量。

file1.py have a class as given below
class one:
       def __init__(self):
            self.HOOK = None
            exec(file2.py)
            self.HOOK = Generate
            ### call the hook method ####
            self.HOOK()

file2.py looks like as (There is no class define in file2.py)
def Generate()
        do 1
        do 2
        hello()

def Hello()
     print "hello"

现在的问题是当我运行脚本时,它给出了一个错误全局名称Hello not found。 如果我从file2.py中的Generate方法中删除Hello(),那么它的工作正常。 我无法在file1.py中使用import file2.py,因为在file2.py中只有一个方法名称(Generate)是fix(它被视为要求)。 因此,除了Genarate方法,用户可以定义任何方法,并且可以在generate方法中调用它,因为这种方法不起作用,所以我必须将整个代码写入generate方法,代码也是重复的。

任何帮助都非常明显......

3 个答案:

答案 0 :(得分:1)

试试这个:

# file1.py
from file2 import Generate

class one:
   def __init__(self):
       self.HOOK = Generate
       ### call the hook method ####
       self.HOOK()

在你的第二个档案中:

# file2.py
def Generate():
    # do 1
    # do 2
    hello()

def hello()
    print "hello"

答案 1 :(得分:0)

根据您发布的内容,您似乎定义了一个功能

def hello():
    print "hello"

然后尝试调用另一个函数

Hello()

请注意,python非常关注资本和非资本字母。

答案 2 :(得分:0)

您可以安全地在from file2 import Generate中编写file1.py,这样做就可以了 - 它只会将Generate方法从file2导入到当前命名空间中,所以所有的用户在file2中定义的其他方法不会混淆file1的命名空间。