我正在学习Python,所以我可以轻松修补files from AIMA。我知道Java和C ++,但我发现存储库中的AIMA代码太混淆了。 Python代码看起来更简单,更优雅......但是,我不知道Python。
我想导入search.py中的函数。
我尝试像这样创建一个search2.py文件:
import search
class Problem2(Problem):
pass
在search.py所在的文件夹上:
~/aima/aima-python$ python search2.py
Traceback (most recent call last):
File "search2.py", line 3, in <module>
class Problem2(Problem):
NameError: name 'Problem' is not defined
为什么会这样?
答案 0 :(得分:7)
当您import search
时,您将名称search
定义为通过执行search.py创建的模块。如果有一个名为Problem
的类,则可以将其作为search.Problem
:
import search
class Problem2(search.Problem):
pass
另一种方法是使用以下语句定义Problem
:
from search import Problem
执行search.py,然后在文件中将Problem
定义为新创建的搜索模块中的名称Problem
。请注意,在此表单中,文件中未定义名称search
。
答案 1 :(得分:3)
这里有两个选项:
而不是import search
,请写from search import Problem
而不是class Problem2(Problem)
,请写class Problem2(search.Problem)
答案 2 :(得分:0)
如果类Problem
位于search
模块中,您必须像from search import Problem
那样导入它,或者像那样使用它:
import search
class Problem2(search.Problem):
pass