Новичок Python здесь пытается написать алгоритм поиска A * для алгоритма поиска блина. Однако мой конструктор выбрасывает объект 'Pancakes', не имеющий атрибута 'numPancakes' в некоторых функциях, но не в других, которые его также используют. Что не так? Приведенная ниже функция печати не создает проблем.
class Pancakes:
def __init__(self, stack, backwardCost):
print("Constructor called")
self.backwardCost = backwardCost
self.forwardCost = self.calculateForwardCost()
self.numPancakes = len(stack) - 1
self.pancakeStack = stack
self.total = self.calculateForwardCost() + self.backwardCost
def print(self):
stackState = "Stack: "
for i in range((self.numPancakes)):
stackState += str(self.pancakeStack[i]) + " "
print(stackState)
Как только я пытаюсь использовать
def calculateForwardCost(self):
forwardCost = 0
for i in range(self.numPancakes):
gap = self.pancakeStack[index] - self.pancakeStack[index + 1]
if gap < -1 or gap > 1:
forwardCost += 1
return forwardCost
, программа говорит:
File "aStar.py", line 8, in __init__
self.forwardCost = self.calculateForwardCost()
File "aStar.py", line 22, in calculateForwardCost
for i in range(self.numPancakes):
AttributeError: 'Pancakes' object has no attribute 'numPancakes'