我试图在每次某个值保持不变时更新一个计数器变量。全局命名空间中的Python变量没有通过类命名空间中的函数中的增强赋值来更新
的主要条件是:
streak = 0
entryno_counter = 1
class OtherDataGet:
streak_type = 3
uod_state = 3
@staticmethod
def uod():
global streak
if entryno_counter == 1:
pass
else:
if values[1] > values_cache[1]: # If value went up
if OtherDataGet.uod_state == 1 or 2: # If it was previously down or same
OtherDataGet.uod_state = 0 # Set state to up
streak = 0 # Reset streak
OtherDataGet.streak_type = 0 # Set streak type to up
elif OtherDataGet.uod_state == 0: # If last state was up
streak += 1 # Add one to streak counter
return 0
elif values[1] < values_cache[1]:
if OtherDataGet.uod_state == 0 or 2:
OtherDataGet.uod_state = 1
streak = 0
OtherDataGet.streak_type = 1
elif OtherDataGet.uod_state == 1:
streak += 1
return 1
elif values[1] == values_cache[1]:
if OtherDataGet.uod_state == 0 or 1:
OtherDataGet.uod_state = 2
streak = 0
OtherDataGet.streak_type = 2
elif OtherDataGet.uod_state == 2:
streak += 1
return 2
正在更新的变量是在全局名字空间,无处不访问,所以应该在更新它没有问题。
例如,当第一次返回2时,条纹计数器设置为0,第二次返回2,应该设置为1,第三次返回2,应该是一个3等
1,125519,0,182701,4,404,0,1
2,125519,2,182702,4,404,2,1
3,125518,1,182703 ,4,404,1,1
4,125519,0,182704,4404,0,1
5,125519,2,182705,4,404,2,1
6,125519,2,182706,4,404,2,1
7,125519,2,182706,4,404,2,1
8,125519,2,182707,4,404,2,1
9,125517,1,182708,4,404,1,1-
10,125518,0,182709,4,404,0, 1
11,125517,1,182710,4,404,1,1
这是输出数据,你需要看的只是最后两列。倒数第二位是OtherDataGet.uod
的返回值,最后一位应该是streak
。如果你看第5-8行,有一条2s的线,最后一行的值应该分别为1,2,3,4,但它应该保持为1,即使它应该被重置为0.
[比创建它们的另一个函数中使用全局变量]的可能的复制(HTTPS:/ /stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-the-one-that-created-them) –