当我添加用作参数的组时,为什么我会因为没有属性的nonetype出现属性错误

时间:2019-04-10 16:47:29

标签: python pygame

当从群组中删除一排精灵时,我试图将新的雨滴行添加到精灵组中。我想通过一条if语句来执行此操作,以检查是否在更新功能期间是否在删除后查看先前的len(group)是否与len(group)相匹配。但是,当我尝试在before函数中调用函数属性以在after函数中进行比较时,收到消息“ AttributeError:'NoneType'对象没有属性'raincount'”。我已经为此进行了一段时间的尝试,希望这种最新方法最终可以让我检查何时删除雨滴行。

我试图通过sprite类中删除sprites的方法传递布尔true语句。失败了,因为它只产生了一个雨滴来评估。我试图设置if语句,但不将group(降雨)作为参数传递给before函数。那没用。在通过降雨之后,我再次尝试了一下,但那也不起作用。

def dropcount(rainfall):
    raincount = len(rainfall)

def dropground():
    rainchange = len(rainfall)
    rainamt = dropcount(rainfall).raincount
    if (rainamt != rainchange):
        print("This works")
    else:
        print("This does not work")

def update_screen(rainfall):
    screen.fill((135, 206, 235))
    dropcount(rainfall)
    rainfall.update()
    dropground()
    rainfall.draw(screen)
    pygame.display.flip()

我希望if语句在循环中被反复评估,并且当从组中删除一行时,该语句被评估为true,并且我可以添加另一行。相反,我得到

AttributeError:'NoneType'对象没有属性'raincount'

谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

df1 <- fread(' ID Date 1 1999-01-01 1 2000-01-01 1 2001-01-01 2 1999-01-01 2 2000-01-01 3 1998-01-01 3 1999-01-01 4 2000-01-01 ') df1[, Date := as.Date(Date)] df2 <- fread(' ID Date 1 1999-03-01 2 2000-01-01 3 1998-01-01 ') df2[, Date := as.Date(Date)] 需要返回结果:

dropcount()

然后您可以将其分配给变量:

def dropcount(rainfall):
    return len(rainfall)

您不能使用rainamt = dropcount(rainfall) 访问函数中的局部变量,该语法用于访问对象的属性。

但是您的.raincount语句将永远不会成功。 ifrainamt都是rainchange,所以它们永远不会不同。没有循环会更改len(rainfall)的长度。尚不清楚您真正期望rainfall做什么。