AttributeError:AS实例没有属性“toString”

2024-09-30 08:35:11 发布

您现在位置:Python中文网/ 问答频道 /正文

用Python为Astar程序编写代码,以找到城市之间的最短路径。得到上面的错误,我完全不知所措。在几个.py文件之间进行转换,下面是相关部分:

从asdriver.py-添加了完整的asdriver

import adata   # Map data
import astar   # A* class
import sys

# Default start, goal cities
defaultcities = ('Yakima, WA', 'Tampa, FL')

def printnode(n):
    print n.toString()

adata.input()

startcity = raw_input("Start city [{0}]: ".format(defaultcities[0])).strip()
if startcity == '':  startcity = defaultcities[0]
if startcity not in adata.cities:
     print "City not recognized"
     sys.exit(0)

goalcity = raw_input("Goal city [{0}]: ".format(defaultcities[1])).strip()
if goalcity == '':  goalcity = defaultcities[1] 
if goalcity not in adata.cities:
    print "City not recognized"
    sys.exit(0)

dbg = raw_input("Debug Options: [none]").strip()

findpath = astar.AS(startcity, goalcity, printnode)
ans = findpath.astar_run(printnode, dbg)
    if not ans:
        print "No answer"
    else:
        print "Final Path:"
        print ans.toString()

从astar.py公司在

^{pr2}$

'

完全初学者,所以任何帮助将不胜感激。在

提前谢谢!!!在


Tags: pyimportinputrawifsysnotprint
1条回答
网友
1楼 · 发布于 2024-09-30 08:35:11

您的def astar_run()方法返回self(参见方法的最后一行),或者它通过切片path[::-1]返回一个列表,也没有toString()方法,所以您得到了这个异常。如果您想打印类的表示,那么声明这个方法__repr__()是正常的,然后您就可以print ans。如果您希望能够转换为字符串,那么该方法通常称为__str__()

您希望从astar_run()返回什么?从同一个函数返回两个不同的类型通常是不好的做法。在

相关问题 更多 >

    热门问题