Python更改变量的值

时间:2019-03-31 13:56:41

标签: python simulation

我正在为一场音乐会进行模拟,在此过程中,我会生成每个粉丝在舞台前花费的时间,然后再去做其他事情(购买食物,饮料或去洗手间)。但是我为他们设置的时间不是他们倒计时做其他事情之前倒计时所用的时间。

在进行倒数计时时,我收到一条错误消息,提示我无法对NoneType和int使用操作数+=,并且在更改了停留时间的分配方式后,我意识到许多停留时间已经更改。

Fan类代码

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

1 个答案:

答案 0 :(得分:0)

stayclass variable,而不是instance variable。这意味着stay的值对于该类的所有实例都是通用的,如果要更改它,则必须从该类而不是实例中更改它。

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