Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何传递非类型错误_Python_Python 3.x - Fatal编程技术网

Python 如何传递非类型错误

Python 如何传递非类型错误,python,python-3.x,Python,Python 3.x,我目前的文本冒险代码有问题,程序运行得很好,但每当角色死亡时,程序就会调用此错误: NextSceneName = CurrentScene.enter() AttributeError: 'NoneType' object has no attribute 'enter' 该计划将在此之后崩溃,这本身并没有什么大不了的 该部分程序的代码为: def play(self): CurrentScene = self.sceneMap.OpeningScene()

我目前的文本冒险代码有问题,程序运行得很好,但每当角色死亡时,程序就会调用此错误:

    NextSceneName = CurrentScene.enter()
AttributeError: 'NoneType' object has no attribute 'enter'
该计划将在此之后崩溃,这本身并没有什么大不了的

该部分程序的代码为:

def play(self):
        CurrentScene = self.sceneMap.OpeningScene()
        LastScene = self.sceneMap.NextScene('Finished')

        while CurrentScene != LastScene:
            NextSceneName = CurrentScene.enter()
            CurrentScene = self.sceneMap.NextScene(NextSceneName)

        CurrentScene.enter()

我想知道的是,如何使用If语句或Try-Except语句来传递NoneType/AttributeError?

首先,
CurrentScene
必须计算为
None
,这就是为什么会出现错误。明智的做法是找出为什么会发生这种情况,如果这不是预期的

但是,如果要捕获该异常,请将最后一行
CurrentScene.enter()
替换为:

try:
    CurrentScene.enter()
except AttributeError:
    dosomething()
或者,如果您想在尝试“进入”之前捕获所有这些信息,您可以执行以下操作:

if CurrentScene == None:
    dosomething()

如果这不起作用,可能是因为您也在while循环中调用了
CurrentScene.enter()
,所以改为在那里执行该操作

如果他没有任何针对CurrentScene的方法enter(),该怎么办?我已尝试将CurrentScene.enter()放置在while循环之外。这只会导致一个新的错误,一个NameError,声明:“name'currentsecene'未定义”我将在if语句中有一个裂缝,从您的代码中可以看出,如果您使用
if..else
block,则它将始终转到
else
,如果您使用
try..except
block,则流控制将始终转到except block,因为您正在尝试访问方法
enter()
类对象
CurrentScene
可能不可用,您应该指定它是什么,或者您是否在任何测试用例上实际获得了输出?如果你在获取输出时遇到问题,那么也发布你的期望输出。目前我有我需要的期望输出,因为文本冒险正在运行,我所要做的就是完全传递错误,以便在死亡场景发生时不会显示!然后在try块中使用您的语句,并在除有可能出错的语句之外的块中使用失败时的操作。