在【python 標準函式庫】中看到的一段程式碼,非常有幫助:
def all_nodes(self): yield self n = self.other while n and n.name != self.name: yield n n = n.other if n is self: yield n return
首尾的2處yield都只回傳一次,作為循環圖的起點、終點,而n
首尾的2處yield都只回傳一次,作為循環圖的起點、終點可能的節點,每次在next調用中均返回next節點利用這個迭代器,就可以輕鬆打印出圖的結構:def __str__(self): return '->'.
return '->'.
return '->'.
.name for n in self.all_nodes()))
Graph:
one->two->three->one
讓我們先來看看標準的在圖結構中增加下一節點的程式碼:def set_next(self, other):
print '%s.next %r' % ( self.name, other)
這樣綁定後,在屬性字段中,增加一個對於下一節點的引用
{'other':
def set_next(self, other): if other is not None: if self in other.all_nodes(): other = weakref.proxy(other) super(WeakGraph, self).set_next(other) return