Python 更改我的变量值

Python changing the values of my variables

我是 运行 一场音乐会的模拟,我在其中生成每个粉丝在做其他事情(买食物、饮料或去洗手间)之前在舞台前花费的时间).但是我为他们设置的时间不是倒计时中使用的时间,直到他们离开做其他事情。

在进行倒计时时,我收到一条错误消息,提示我无法将操作数 += 用于 NoneType 和 int,在更改住宿的分配方式后,我意识到很多住宿时间改变了。

Fanclass代码

class Fan:
    stay = 0
    def __init__(self, gender):
        self.gender = gender

此代码创建一个粉丝,计算他们将在舞台前停留多长时间,并将他们添加到舞台前方区域

   for i in range(200):
       x = random.randint(1,10)
       if x <= 7:
           f = Fan("f")
           f.stay = stage.calcstay()
           stage.addfan(f)
           print(i,": ",f.stay)
       else:
           f = Fan("m")
           f.stay = stage.calcstay()
           stage.addfan(f)
           print(i,": ",f.stay)

这是倒数粉丝在舞台前停留时间的功能。 (字面意思是下一段代码)

for x in range(360):
    stagefunction()

这是stagefunction()方法:

def stagefunction():
    if len(stage.fans) > 0:
        for i in range(len(stage.fans)):
            print(i,": ",stage.fans[i].stay)
            stage.fans[i].stay += -1
            if  stage.fans[i].stay <= 0:
                movefromstage(i)
            stage.TTS += 1
    return

我预计 stagefunction() 会被调用多次,每次都会将舞台前区每个粉丝的剩余时间减少 1,并移除那些不应再停留的人。但是,我什至连一次都无法通过 stagefunction(),因为停留时间会发生变化,通常在 190 年代初期左右,值会更改为 NoneType

stayclass variable,而不是 instance variable。这意味着 stay 的值对 class 的所有实例都是通用的,如果你想改变它,你必须从 class 而不是一个实例来改变它。

要定义 instance variable,请将其放入您的 __init__() 函数中