Python新手在这里尝试着为pancake搜索算法编写一个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'
看看构造器中东西的顺序:
您正在尝试在分配
self.numPancakes
之前使用它。只需交换这些行以确保首先设置numPancakes
:实际上,我正在重新阅读您的代码,而且
pancakeStack
也在其赋值之前被使用。在调用calculateForwardCost
函数之前,需要分配calculateForwardCost
中所需的每个属性相关问题 更多 >
编程相关推荐