J'essaie de mettre à jour une variable de compteur d'un chaque fois qu'une certaine valeur reste la même.La variable Python dans l'espace de noms global n'est pas mise à jour par affectation augmentée dans la fonction dans l'espace de noms de classe
Le principal c'est conditionnel:
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
La variable qui est mise à jour est dans l'espace de noms global, et est accessible partout, donc il devrait y avoir aucun problème à le mettre à jour. Par exemple, lorsqu'un 2 est retourné la première fois, le compteur de stries est mis à 0, le deuxième temps a 2 est retourné, il doit être mis à 1, le troisième temps a 2 est retourné, il doit être un 3, etc.
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,4,404, 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
Ceci est la donnée de sortie, tout ce que vous devez regarder est les deux dernières colonnes. L'avant-dernier est la valeur retournée de OtherDataGet.uod
, et la dernière devrait être streak
. Si vous regardez les lignes 5-8, il y a une série de 2, et la dernière valeur sur la ligne devrait être 1, 2, 3, 4 respectivement, mais elle reste 1 même quand elle devrait être remise à 0.
double possible de [Utilisation des variables globales dans une fonction autre que celui qui les a créés] (https://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-the-one-that-created-them) –