2015-09-07 126 views
4

如果我有一个变量:如何检查是否变量的值发生了变化

var = 5 

我想检测并跳转到一个功能时的变量的值发生变化,因此,如果var不等于之前的价值,我想跳到一个函数。

这样做最简单的方法是什么?

又如:

from datetime import datetime 
import time 


def dereferentie(): 
    currentMinute = datetime.now().minute 
    checkMinute(currentMinute) 

def checkMinute(currentMinute): 

    #if currentMinute has changed do: 
     printSomething() 

def printSomething(): 
    print "Minute is updated" 


def main(): 
    while (1): 
     dereferentie() 


if __name__ == '__main__': 
    main() 
+7

[在Python变量的值检测的变化(可能重复http://stackoverflow.com/questions/7540443/detecting-change-in-the-value-of-python-变量) – asdf

+2

...你可能正在寻找一个'if'语句吗? – nneonneo

+0

var是一个全局变量还是它属于一个类? – Pynchia

回答

3

我会去触发你所需功能的setter函数。

def setValue(val): 
    global globalVal 
    valueChanged= g_val != val 
    if valueChanged: 
     preFunction() 
    globalVal = val 
    if valueChanged: 
     postFunction() 
2

建立在@ HelloWorld的答案和@ drIed的评论:一个很好的方法是,把它包装到一个类中。 例如:

class Watcher: 
    """ A simple class, set to watch its variable. """ 
    def __init__(self, value): 
     self.variable = value 

    def set_value(self, new_value): 
     if self.value != new_value: 
      self.pre_change() 
      self.variable = new_value 
      self.post_change() 

    def pre_change(self): 
     # do stuff before variable is about to be changed 

    def post_change(self): 
     # do stuff right after variable has changed 
相关问题