簡體   English   中英

TypeError:“NoneType”對象沒有屬性“__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.valuesNone

您應該檢查所有更新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 ,它應該可以工作。 希望這可以幫助。

我也面臨以下代碼的相同問題:

在此處輸入圖像描述

def get_event_content(self, event_name):
    """
    Get content metadata blob
    :return:
    """
    info = self.webservice.get_content_portal_item_by_name(event_name)["json_result"]["results"]
    content = None
    if len(info) > 0:
        content = info[0]
    return content

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM