所以在我目前引用的书(Problem Solving with Algorithms and Data Structres)中,图是如何实现的。我不明白的是,Vertex
类中的__str__
函数在这里是如何工作的,以及我们为什么需要它。谁能解释一下吗?谢谢您!在
class Vertex:
def __init__(self,key):
self.id = key
self.connectedTo = {}
def addNeighbor(self,nbr,weight=0):
self.connectedTo[nbr] = weight
def __str__(self):
return str(self.id) + ' connectedTo: ' + str([x.id for x in self.connectedTo])
def getConnections(self):
return self.connectedTo.keys()
def getId(self):
return self.id
def getWeight(self,nbr):
return self.connectedTo[nbr]
class Graph:
def __init__(self):
self.vertList = {}
self.numVertices = 0
def addVertex(self,key):
self.numVertices = self.numVertices + 1
newVertex = Vertex(key)
self.vertList[key] = newVertex
return newVertex
def getVertex(self,n):
if n in self.vertList:
return self.vertList[n]
else:
return None
def __contains__(self,n):
return n in self.vertList
def addEdge(self,f,t,cost=0):
if f not in self.vertList:
nv = self.addVertex(f)
if t not in self.vertList:
nv = self.addVertex(t)
self.vertList[f].addNeighbor(self.vertList[t], cost)
def getVertices(self):
return self.vertList.keys()
def __iter__(self):
return iter(self.vertList.values())
一行代码就足够问你问题了:
让我们把它分开:
self.id
是对象的唯一ID。str()
将其转换为字符串。在connectedTo:
,然后str()
由[...]
构造生成的列表的转换。在我猜是3。给你带来麻烦。它只是一个中心python构造,选择
self.connectedTo
序列中的每个元素,获取其中的.id
,并返回这些元素的列表。在之后,您有一个字符串,
^{pr2}$__str__
返回。因为每当python尝试获取对象的字符串形式时都会调用该方法,所以当您执行以下操作时可能会调用该方法:当您尝试字符串化对象时,
__str__
函数就是调用的函数,因此这可以使打印对象更容易
相关问题 更多 >
编程相关推荐