如何在每次使用时重新计算变量值?

时间:2015-08-09 15:26:01

标签: python

我想要在每次使用时计算变量。例如,每次WHERE Field LIKE '123___' 打印var1 = var2 + var3。如何创建这样的“动态”变量?

var1

2 个答案:

答案 0 :(得分:10)

您需要在类实例上使用属性。该属性将在每次访问时执行一些代码。例如,这是一个属性,每次访问时都会增加其值。定义访问属性的dunder方法,以便在对对象执行操作时自动增加它。例如,定义__str__print(var)将增加值。

class MyVar(object):
    def __init__(self, initial=0):
        self._var1 = initial

    @property
    def var1(self):
        self._var1 += 1
        return self._var1

    def __str__(self):
        return str(self.var1)

var1 = MyVar()
print(var1)  # 1
print(var1)  # 2
print(var1.var1)  # 3

计算var1 = var2 + var3

class MyVar(object):
    def __init__(self, var2, var3):
        self.var2 = var2
        self.var3 = var3

    @property
    def var1(self):
        return self.var2 + self.var3

var = MyVar(4, 2)
print(var.var1)  # 6
var.var3 = 8
print(var.var1)  # 12

答案 1 :(得分:2)

您还可以在每次需要值时将计算函数存储在变量中并call

>>> var1 = lambda: var2 + var3
>>> var2 = 4
>>> var3 = 2
>>> print(var1())
6
>>> var3 = 8
>>> print(var1())
12