gpt4 book ai didi

python - 从Python中的函数创建一个新对象

转载 作者:太空宇宙 更新时间:2023-11-03 19:12:47 26 4
gpt4 key购买 nike

class SlidePuzzle(object):

def __init__(self, state = None):
if state == None: state = [[1,2,3],[4,'N',5],[6,7,8]]
self.puzzle_state = list(state)

def isValidMove(self, move):
x,y = self.getBlank()

if move == 'up':
return y != 0
elif move == 'down':
return y != 2
elif move == 'left':
return x != 0
elif move == 'right':
return x != 2
else:
print "Invalid Move"
return 0
def getValidMoves(self):
validMoves = ['up', 'down', 'left', 'right']

if not self.isValidMove('down'):
validMoves.remove('down')
if not self.isValidMove('up'):
validMoves.remove('up')
if not self.isValidMove('right'):
validMoves.remove('right')
if not self.isValidMove('left'):
validMoves.remove('left')

return validMoves

def generateChildren(self):
return [SlidePuzzle(self.puzzle_state).move(m) for m in self.getValidMoves()]

如果我运行这些命令:

- p = SlidePuzzle()
- print p
- p.move('up')
- print p
- print p.generateChildren()
- print p

这是输出。我没有包含所有源代码,但正如您所看到的,移动功能可以根据需要工作。我不明白的是为什么generateChildren函数不仅似乎没有创建任何新的幻灯片拼图对象,而且还扰乱了调用对象的拼图状态。

- [1, 2, 3]
- [4, 'N', 5]
- [6, 7, 8]

- [1, 'N', 3]
- [4, 2, 5]
- [6, 7, 8]

- [None, None, None]

- [1, 2, 3]
- [4, 'N', 5]
- [6, 7, 8]

最佳答案

generateChildren 返回 SlidePuzzle.move() 返回值的列表,而不是 SlidePuzzle 对象的列表。您没有显示 move,但我怀疑它返回 None。

关于python - 从Python中的函数创建一个新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12391090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com