В util.py

class Stack:
  "A container with a last-in-first-out (LIFO) queuing policy."
  def __init__(self):
    self.list = []

  def push(self,item):
    "Push 'item' onto the stack"
    self.list.append(item)

  def pop(self):
    "Pop the most recently pushed item from the stack"
    return self.list.pop()

  def isEmpty(self):
    "Returns true if the stack is empty"
    return len(self.list) == 0

В game.py

class Directions:
  NORTH = 'North'
  SOUTH = 'South'
  EAST = 'East'
  WEST = 'West'
  STOP = 'Stop'

  LEFT =       {NORTH: WEST,
                 SOUTH: EAST,
                 EAST:  NORTH,
                 WEST:  SOUTH,
                 STOP:  STOP}

  RIGHT =      dict([(y,x) for x, y in LEFT.items()])

  REVERSE = {NORTH: SOUTH,
             SOUTH: NORTH,
             EAST: WEST,
             WEST: EAST,
             STOP: STOP}

В search.py

  from game import Directions
  s = Directions.SOUTH
  w = Directions.WEST
  e = Directions.EAST
  n = Directions.NORTH

  from util import Stack
  stack = Stack
  stack.push(w)

Я получаю сообщение об ошибке в stack.push (w), в котором говорится, что «TypeError: необязательный метод push () должен вызываться с экземпляром Stack в качестве первого аргумента (вместо этого получен экземпляр str)»

Что именно это значит? Я не могу нажать w? Если так, что я могу сделать, чтобы вставить w в стек?

1
ealeon 2 Фев 2013 в 12:02

2 ответа

Лучший ответ

Вы должны правильно инициализировать Stack, я думаю, вы забыли скобки:

stack = Stack()
4
Alex 2 Фев 2013 в 08:08

Я думаю, что проблема с предыдущей строкой stack = Stack Должен быть заменен stack = Stack()

2
JRK 2 Фев 2013 в 08:15