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