【发布时间】:2014-01-28 13:20:06
【问题描述】:
我在 python 中遇到了堆叠问题。在一个有 4 个函数的类中,我需要使用 pop()。但它不会按我想要的方式工作,或者我的列表有问题。
谁能帮帮我。
class myStack(list):
def __init__(self,a=[]):
list.__init__(self,a)
def push(self, x):
self.append(x)
def pop(self):
return self.pop()
def peek(self):
return self[-1]
def emptyStack():
if list.count != 0:
return False
else:
return True
c = myStack(list())
c.push(3)
c.push(5)
c.push(7)
print(c)
print(c.peek())
c.pop()
print(c)
【问题讨论】:
-
“它不会按照我想要的方式工作,或者我的列表有问题。” 那么,它是崩溃了,还是什么?请提供更多细节。
-
如果你从
list继承,你甚至不需要定义pop(),因为你的定义和list.pop()是一样的。本着同样的精神,您可以将push简单地定义为push = list.append。 -
值得注意的是,
MyStack.__init__的可变默认参数可能会给您带来麻烦... 将其设为__init__(self, a=None)并在必要时在方法内创建一个空列表 (if a is None:)