如何使变量以交互方式依赖于其指定的公式

时间:2013-02-26 19:20:18

标签: python variables storage

在下面的代码中:

>>> a=10
>>> b=10
>>> c=10
>>> D=a+b+c
>>> D
30
>>> a=5
>>> D
30

我理解D在第4行中被赋值,因此它将保留该值,除非明确更改(例如D=33)。 但我希望有一个互动的D,当a, b,c更改时会发生变化。 我们将如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

a=10
b=10
c=10

def D():
    return a+b+c

print D()

a=1

print D()

答案 1 :(得分:1)

我能想到的最简单的解决方案就是上课。这是一个适合您的问题的例子,虽然它不是很一般:

class InteractiveSumOf3Variables(object):

    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

    def get_value(self):
        return self.a+self.b+self.c



D = InteractiveSumOf3Variables(10,10,10)

print D.get_value()
>>> 30

D.a = 5

print D.get_value()
>>> 25

答案 2 :(得分:1)

你可以使用生成器或函数作为命名(如前面的答案所示)或作为匿名lambda

>>> from itertools import count
>>> foo_D = lambda : a + b + c #Lambda
>>> gen_D = (a+b+c for _ in count()) #generator expression
>>> a = 1
>>> b = 2
>>> c = 3
>>> next(gen_D)
6
>>> c = 4
>>> next(gen_D)
7
>>> foo_D()
7
>>> c = 3
>>> foo_D()
6