我有一个模块,我在其中定义了一个使用另一个类 Vertex 的 Graph 类。
# Graph.py
class Graph(object):
def __init__(self):
self.vertList = {}
self.numVertices = 0
def addVertex(self,key):
self.numVertices += 1
newVert = Vertex(key)
self.vertList[key] = newVert
return newVert
def getVertex(self,k):
if k in self.vertList:
return self.vertList[k]
else:
return None
class Vertex(object):
def __init__(self,key):
self.id = key
self.connectedTo = {}
我想扩展 Vertex 类以在另一个模块中使用:
# BFSGraph.py
from Graph import Vertex,Graph
class Vertex(Vertex):
def __init__(self,key):
super(Vertex,self).__init__(key)
# extensions for BFS
self.predecessor = None
self.dist = 0
self.color = 'w' # white, grey, and black
class BFSGraph(Graph):
def getColor(self,k):
return self.getVertex(k).color
def test():
g=BFSGraph()
g.addVertex('a')
g.getColor('a')
当我运行测试例程时,它返回“'Vertex' 对象没有属性 'color'”,因此我对 Vertex 所做的更改不会传播到 Graph,并且 BFSGraph 没有使用扩展的 Vertex。
如何让 Graph 和 BFSGraph 使用新的 Vertex?