我无法理解python中的对象操作

我无法理解python中的对象操作,python,class,object,recursion,Python,Class,Object,Recursion,我尝试使用下面的代码实现一个使用2个堆栈的队列 实用程序堆栈实现 class Stack(): def __init__(self,array = []): self.array = array def is_empty(self): return self.array == [] def pop(self): if self.array == []: raise Exception('stack

我尝试使用下面的代码实现一个使用2个堆栈的队列

实用程序堆栈实现

class Stack():
    def __init__(self,array = []):
        self.array = array

    def is_empty(self):
        return self.array == []

    def pop(self):
        if self.array == []:
            raise Exception('stack is empty')
        else:
            popped_element = self.array.pop()
            return popped_element

    def push(self,key):
        self.array.append(key)

    def top(self):
        return self.array[-1]

    def __repr__(self):
        return " ".join(list(map(str,self.array)))



if __name__ == "__main__":
    q = Stack()
    q.push(1)
    q.push(2)
    q.push(3)
    q.push(4)
    q.push(5)
    print(q.pop())
    print(q.pop())
    print(q.pop())
    q.push(10)
    print(q)
当我试图对队列执行上述操作时,我的代码陷入无限递归,因为堆栈的pop操作不起作用。 有人能帮我弄清楚为什么我的代码(队列操作:-q.dequeue())陷入无限递归吗?
谢谢。

问题在于,由于使用了

换句话说,由于默认情况下可以初始化堆栈的数组是空列表,因此任何将来的实例都不会只使用空列表,而是使用与所有以前的堆栈实例相同的列表

尝试以下快速修复方法:

class Stack():
    def __init__(self,array=None):
        self.array = array or []
    ...

这回答了你的问题吗?请允许我评论一下,您的堆栈只不过是一些函数的重新实现列表(它们不是数组)已经有了。@KlausD。感谢链接,它解决了我的问题。我完全知道Stack类只不过是列表的append和pop函数。我创建这个类是因为我想有一个类似于其他语言中堆栈的抽象。
class Stack():
    def __init__(self,array=None):
        self.array = array or []
    ...