TypeError: 'NoneType' オブジェクトに属性 '__getitem__' がありません 質問する

TypeError: 'NoneType' オブジェクトに属性 '__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]

このエラーが何を意味し、なぜ発生するのかを説明して修正できるようにしていただけますか?

ベストアンサー1

BrenBarn さんは正しいです。このエラーは、 のようなことをしようとしたことを意味しますNone[5]。バックトレースでは と表示されていますself.imageDef=self.values[2]。つまり、 はself.valuesですNone

更新されるすべての関数を調べてself.values、すべてのコーナーケースを考慮していることを確認する必要があります。

おすすめ記事