我正在学习Python,所以我可以轻松地修改AIMA中的文件.我知道Java和C++,但我发现存储库中的AIMA代码太混淆了.Python代码看起来更简单,更优雅......但是,我不知道Python.
我想在search.py中导入函数.
我尝试像这样创建一个search2.py文件:
import search
class Problem2(Problem):
pass
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
当您import search,将名称定义search为通过执行search.py创建的模块.如果有一个被调用的类Problem,则可以访问它search.Problem:
import search
class Problem2(search.Problem):
pass
Run Code Online (Sandbox Code Playgroud)
另一种方法是Problem使用此声明进行定义:
from search import Problem
Run Code Online (Sandbox Code Playgroud)
执行search.py,然后Problem在您的文件中定义Problem新创建的搜索模块中的名称.请注意,在此表单中,名称search未在您的文件中定义.