我有两个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方法,代码也是重复的。
任何帮助都非常明显......
答案 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
的命名空间。