Python保留旧值

时间:2018-05-23 23:37:27

标签: python python-3.x global-variables telegram

我有一个名为door的全局变量,在开始时我将其设置为20 在我调用一个应该修改门值的函数后:

class Utilities:
    door = 20  

inf = Utilities()  

@bot.command("door", hidden=True)
def changereqnum(message, chat):
    try:
      inf.door = int(message.text[5::])
    except ValueError:
      chat.send('Actually still open to %s requests, Insert a valid number' % (inf.door))
      return
    chat.send('Now I\'m open to %s requests' % (inf.door))

然后呢? 这里发生的是它说该函数表示它改变了门的值,但是如果我再次调用该函数它仍然会给我20的旧值,有时(随机)新值

我甚至尝试使用类中的对象而不是使用全局值,但仍然不起作用

也许我应该说我在电报机器人的代码中使用这个函数,但整个代码真的很长(900行,你可以找到它here)所以我简化了它

我会尽力做到关于实际输入和输出的事情:首先我使用的是类而不是全局变量,因为它不是很清楚什么是工作,什么不工作。
每当我在我的机器人的聊天中输入“/ door”时,就会调用此函数,它会向我发送“实际上仍然可以打开20个请求......”这样就可以了。 相反,如果我输入“/ door X”然后解析文本并且它应该将inf.door的值更改为数字X,并且它报告,我收到一条消息“现在我对X请求开放”。
无论如何它不起作用,如果我在此之后键入“/ door”它仍然给我inf.door的值是20而不是X我无法解释自己为什么。但是这里有另一个奇怪的事情:如果我在聊天中重复输入“门”,它将随机给我值X,因为它存储了两个值。

1 个答案:

答案 0 :(得分:0)

解决了,这是多线程的错误,我使用Redis来存储变量