Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类方法从其上一次执行(Python)继承列表_Python_Class_Graph Theory - Fatal编程技术网

类方法从其上一次执行(Python)继承列表

类方法从其上一次执行(Python)继承列表,python,class,graph-theory,Python,Class,Graph Theory,请参阅此处的完整工作目录: 所以我在研究一些图论和用Python编写代码的东西。我创建了一个名为Graph的类,如下所示(不用担心缩进,在文件本身中就可以了): 及 现在,在另一个文件中,我初始化了一个新的图,我称之为g,以简化并在其上进行测试 print("BFS for 1 and 2 # --> should return True") print( g.bfs(2, Queue(1) ), end="\n\n" ) print("BFS for 1 and 4 # -->

请参阅此处的完整工作目录:

所以我在研究一些图论和用Python编写代码的东西。我创建了一个名为Graph的类,如下所示(不用担心缩进,在文件本身中就可以了):

现在,在另一个文件中,我初始化了一个新的
,我称之为
g
,以简化并在其上进行测试

print("BFS for 1 and 2 # --> should return True")
print( g.bfs(2, Queue(1) ), end="\n\n" )

print("BFS for 1 and 4 # --> should return True")    # but returns False!!!
print( g.bfs(4, Queue(1) ), end="\n\n" )
现在,当我开始调试它时,我注意到,出于某种原因跟踪已检查节点的
checked
列表中充满了第一次调用该函数检查的节点,即使我在
def bfs(…)中将其隐式设置为
checked=list()
声明,以便每次有人调用函数时该声明都为空。这种异常行为导致它不检查节点4,因为它认为它已经被检查过(
checked=[1,3,4]
),因此第二时间函数决定两个节点没有连接并返回False

如果我在
队列(1)
之后传递
[]
空列表,则可以解决此问题,如下所示:

print( g.bfs(4, Queue(1), [] ) )

然而,这会使事情复杂化,我也只是想知道它为什么会这样做。因此,如果有人知道这里到底发生了什么,我期待着你的回应

(元建议:最好不要将投票评论编辑成问题。改为添加评论,解释为什么您认为它不是重复的,并且请记住,一位经验丰富的海报是真诚地做出这一决定的。在表达您的观点时,请避免使用所有的大写字母。)@halfer好的,对不起,我压力太大了。你说得对。不用担心——即使是这里的长期用户有时也会得到他们不喜欢的投票或接近。它发生了
:-)
class Queue:
def __init__(self, element):
    if isinstance(element, list):
        self.storage = element
    else:
        self.storage = [element]

def ins(self, element):
    self.storage.insert(0, element)
    return element

def pop(self):
    temp = self.storage[0]
    self.storage.pop(0)
    return temp

def length(self):
    return len(self.storage)
print("BFS for 1 and 2 # --> should return True")
print( g.bfs(2, Queue(1) ), end="\n\n" )

print("BFS for 1 and 4 # --> should return True")    # but returns False!!!
print( g.bfs(4, Queue(1) ), end="\n\n" )
print( g.bfs(4, Queue(1), [] ) )