类对象名称未定义

时间:2019-04-13 23:27:53

标签: python-3.x

我正在尝试对类的初始化进行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次失败。

1 个答案:

答案 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()

如果您发布整个错误,我可以解释为什么我的解决方案可以解决该错误,但是一切似乎都可以正常工作。