Python图形实现 - __Contains__ + addEdge

时间:2015-12-09 21:28:28

标签: python function class graph adjacency-list

嘿,所以目前正在制作一个使用邻接列表格式将图形实现到python中的教程。我遇到了一个例子,在这个类图中'有一个缩进的包含函数。如下图所示。

def __contains__(self, n):
    return n in self.vertDict

vertDict是通过类初始化的字典。我可以要求解释这个功能的用途吗?

def addEdge(self,h,t):         
    if h not in self.vertDict:
        newV = self.addVert(h)
    if t not in self.vertDict:
        newV = self.addVert(t)
    self.vertDict[h].addnewLink(self.vertDict[t])

两只鸟一石,我有点理解“添加边缘”。功能但是参数h和t是什么?是创造边缘吗?

欣赏它!我一直在认真对待这些实施:'(

1 个答案:

答案 0 :(得分:3)

  

我可以要求解释这个功能的用途吗?

6

def __contains__(self, n): return n in self.vertDict 定义了类的实例在__contains__in运算符的右侧时的行为方式 - 例如not in或{{1 }}。 [1]

考虑以下示例:

x in foo
  

两只鸟一石,我有点理解'addEdge'功能但是参数h和t是什么?是创造边缘吗?

x not in fooclass Foo(object): def __init__(self, bar): self.bar = bar def __contains__(self, x): return self.bar == x f = Foo(3) print 2 in f # => False print 3 in f # => True 似乎都是顶点。此方法似乎在ht之间添加了边缘,因此它看起来像h

t

来源:

[1] What does __contains__ do, what can call __contains__ function