Python attributeError类intance没有属性“\uuu getitem\uuu”
我创建了一个MarblesBoard类,用于实例化新的MarblesBoard对象。我想使用Solver类来求解电路板Python attributeError类intance没有属性“\uuu getitem\uuu”,python,Python,我创建了一个MarblesBoard类,用于实例化新的MarblesBoard对象。我想使用Solver类来求解电路板 class MarblesBoard: def __init__(self, marbles): self.input = list(marbles) print(marbles) def switch(self): self.input[1], self.input[0] = self.input[0], se
class MarblesBoard:
def __init__(self, marbles):
self.input = list(marbles)
print(marbles)
def switch(self):
self.input[1], self.input[0] = self.input[0], self.input[1]
print self.input
def rotate(self):
return self.input[1:] + self.input[:1]
print self.input
def is_solved(self):
if all(self.input[i] <= self.input[i+1] for i in range(len(self.input)-1)):
return True
print "True"
else:
print "Not solved!"
board = MarblesBoard((3,6,7,4,1,0,8,2,5))
board.switch()
board.rotate()
board.is_solved()
board
一切正常
class Solver:
def __init__(self, MarblesBoard):
print self
self.input = MarblesBoard
def solve(self):
if self.input[0] & self.input[1] != 0:
if self.input[1] < self.input[0]:
self.input.switch()
else:
self.input.rotate()
else:
self.input.rotate()
player = Solver(board)
player.solve()
告诉我AttributeError:MarblesBoard实例在引用solve函数中的self.input行时没有属性“getitem”。self.input是MarblesBoard类的一个实例,它包含一个也称为input的变量。MarblesBoard没有实现获取其内部self.input列表的uu_getitem_uu_uu方法,因此您必须亲自访问它
if self.input.input[0] & self.input.input[1] != 0:
第一个输入获取MarblesBoard实例,第二个输入获取实例内的列表
假设我用更具描述性的变量名实现了Solver
class Solver:
def __init__(self, MarblesBoard):
print self
self.marbles_board = MarblesBoard
...
那么使用它就更不言而喻了
def solve(self):
if self.marble_board.input[0] & self.marble_board.input[1] != 0:
...
Python为您打印了一个堆栈跟踪。。。。友善地与我们分享这些信息。我们总是看到这些事情,我们中的那些第一次做得不对的人,帮助我们弄清楚到底发生了什么。