我正在尝试对类的初始化进行doctest。而当我收到错误消息时,该名称未定义。
例如,我必须为Rat类做同样的事情,下面是我的代码:
class Rat:
""" A rat caught in a maze. """
def __init__(self, symbol, row, col):
"""(Rat, str, int, int) - > NoneType
A rat with a symbol J or P donating who they are and row and col donating their position.
>>> rat_1 = Rat(RAT_1_CHAR, 1, 1)
>>> rat_2 = Rat(RAT_2_CHAR, 1, 2)
>>> rat_1.symbol
'J'
这很好用,现在当我对下面的类迷宫做同样的操作时,我得到的答案是在运行doctest时未定义迷宫。这2个和为什么1个比其他工作有什么区别?
class Maze:
""" A 2D maze. """
def __init__(self, structure, rat_1, rat_2):
"""(Maze, list of list of str, Rat, Rat) -> NoneType
>>> maze = Maze([['#', '#', '#', '#', '#', '#', '#'], ['#', '.', '.', '.', '.', '.', '#'], ['#', '.', '#', '#', '#', '.', '#'], ['#', '.', '.', '@', '#', '.', '#'], ['#', '@', '#', '.', '@', '.', '#'], ['#', '#', '#', '#', '#', '#', '#']], Rat('J', 1, 1), Rat('P', 1, 4))
>>> maze.rat_1
Rat('J', 1, 1)
"""
self.structure = structure
self.rat_1 = rat_1
self.rat_2 = rat_2
以下整个错误:
文件“ 主”,位于主中的第7行。迷宫。初始化 失败的例子: 迷宫=迷宫([[xxxx],[xxxx]],Rat('J',1,1),Rat('P',1,4)) 引发异常: 追溯(最近一次通话): __run中的文件“ C:\ Users \ mobasher \ AppData \ Local \ Continuum \ anaconda3 \ lib \ doctest.py”,行1330 compileflags,1),test.globs) 文件“”,第1行,位于 迷宫=迷宫([[xxxx],[xxxx]],Rat('J',1,1),Rat('P',1,4)) NameError:未定义名称“ xxxx”
文件“ 主”,位于主中的第8行。迷宫。初始化 失败的例子: maze.rat_1 引发异常: 追溯(最近一次通话): __run中的文件“ C:\ Users \ mobasher \ AppData \ Local \ Continuum \ anaconda3 \ lib \ doctest.py”,行1330 compileflags,1),test.globs) 文件“”,第1行,位于 maze.rat_1 NameError:名称“迷宫”未定义
1个项目失败: 2 of 2 in 2,在主中。迷宫。初始化 测试失败 2次失败。
答案 0 :(得分:0)
花一点时间来编写您丢失的代码部分,但是我没有看到任何问题,我的代码有很多错误,但是似乎没有一个与您指出的错误相匹配。
class Rat:
""" A rat caught in a maze. """
def __init__(self, symbol, row, col):
"""(Rat, str, int, int) - > NoneType
A rat with a symbol J or P donating who they are and row and col donating their position.
>>> rat_1 = Rat('J', 1, 1)
>>> rat_2 = Rat('P', 1, 2)
>>> rat_1.symbol
'J'
"""
self.symbol = symbol
self.row = row
self.col = col
pass
def __repr__(self):
return 'Rat(\'{}\', {}, {})'.format(self.symbol, self.row, self.col)
class Maze:
""" A 2D maze. """
def __init__(self, structure, rat_1, rat_2):
"""(Maze, list of list of str, Rat, Rat) -> NoneType
>>> maze = Maze([['#', '#', '#', '#', '#', '#', '#'], ['#', '.', '.', '.', '.', '.', '#'], ['#', '.', '#', '#', '#', '.', '#'], ['#', '.', '.', '@', '#', '.', '#'], ['#', '@', '#', '.', '@', '.', '#'], ['#', '#', '#', '#', '#', '#', '#']], Rat('J', 1, 1), Rat('P', 1, 4))
>>> maze.rat_1
Rat('J', 1, 1)
"""
self.structure = structure
self.rat_1 = rat_1
self.rat_2 = rat_2
if __name__ == "__main__":
import doctest
doctest.testmod()
如果您发布整个错误,我可以解释为什么我的解决方案可以解决该错误,但是一切似乎都可以正常工作。