我正在用python制作纸牌游戏。我将代码用于在网上找到的堆栈类:
class Stack:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def push(self, item):
self.items.insert(0,item)
def pop(self):
return self.items.pop(0)
def peek(self):
return self.items[0]
运行此命令时,一切正常,但是当我尝试调用任何行为时,程序要求我为self传递一个值,就好像它是一个参数一样。我觉得我疯了...
运行此代码时:
Cards = []
Cards = Stack()
Cards = Stack.push(15)
Cards = Stack.peek()
Cards = Stack.pop()
运行第三行时,显示此错误:
TypeError: push() missing 1 required positional argument: 'item'
当我像这样传递None的值时
Cards = Stack.push(None,15)
我还有另一个错误:
self.items.insert(0,item)
AttributeError: 'NoneType' object has no attribute 'items'
答案 0 :(得分:3)
在将Cards
声明为Stack
的实例之后,您不再需要引用Stack
。只需使用Cards
。
Cards = Stack()
Cards.push(15)
x = Cards.peek()
y = Cards.pop()
此外,代码Cards = []
的第一行也没有用,因为您立即将Cards
重新分配为其他内容。
答案 1 :(得分:2)
您不应在每行上重新分配Cards
。 Cards
是Stack
对象,它需要保持不变。应该将它用作调用所有其他方法的变量。
Cards = Stack()
Cards.push(15)
item = Cards.peek()
item2 = Cards.pop() # item == item2