![](/img/trans.png)
[英]TypeError: 'NoneType' object has no attribute '__getitem__'
[英]TypeError: 'NoneType' object has no attribute '__getitem__'
我遇到了问题,我不知道为什么会发生这种情况以及如何解决它。 我正在使用 python 和 pygame 开发视频游戏,但出现此错误:
File "/home/matt/Smoking-Games/sg-project00/project00/GameModel.py", line 15, in Update
self.imageDef=self.values[2]
TypeError: 'NoneType' object has no attribute '__getitem__'
代码:
import pygame,components
from pygame.locals import *
class Player(components.Entity):
def __init__(self,images):
components.Entity.__init__(self,images)
self.values=[]
def Update(self,events,background):
move=components.MoveFunctions()
self.values=move.CompleteMove(events)
self.imageDef=self.values[2]
self.isMoving=self.values[3]
def Animation(self,time):
if(self.isMoving and time==1):
self.pos+=1
if (self.pos>(len(self.anim[self.imageDef])-1)):
self.pos=0
self.image=self.anim[self.imageDef][self.pos]
你能向我解释这个错误是什么意思以及为什么会发生这样我就可以修复它吗?
BrenBarn是正确的。 该错误意味着您尝试执行类似None[5]
。 在回溯中,它表示self.imageDef=self.values[2]
,这意味着您的self.values
为None
。
您应该检查所有更新self.values
的函数,并确保考虑到所有self.values
情况。
move.CompleteMove()
不会返回值(也许只是打印出一些内容)。 任何不返回值的方法都将返回None
,并且您已将None
分配给self.values
。
这是一个例子:
>>> def hello(x):
... print x*2
...
>>> hello('world')
worldworld
>>> y = hello('world')
worldworld
>>> y
>>>
您会注意到y
不会打印任何内容,因为它的None
(在交互式提示符下唯一不打印任何内容的值)。
您在类中使用的函数move.CompleteMove(events)
可能不包含return
语句。 所以什么都不会返回到self.values
(==> None)。 在move.CompleteMove(events)
使用return
返回要存储在self.values
任何self.values
,它应该可以工作。 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.