【问题标题】:How to make a variable interactively dependent to its assigned formula如何使变量以交互方式依赖于其分配的公式
【发布时间】:2013-02-26 19:20:17
【问题描述】:

在下面的代码中:

>>> 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 个整数值(甚至是值列表)并提供 sum 方法/属性的对象?

标签: python variables storage


【解决方案1】:
a=10
b=10
c=10

def D():
    return a+b+c

print D()

a=1

print D()

【讨论】:

    【解决方案2】:

    我能想到的最简单的解决方案是通过一个类。这是一个适合您的问题的示例,尽管它不是很笼统:

    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
    

    【讨论】:

      【解决方案3】:

      您可以使用生成器或函数作为命名(如前面的答案所建议)或匿名 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 
      

      【讨论】:

        猜你喜欢
        • 2019-08-11
        • 2010-10-22
        • 2018-12-18
        • 1970-01-01
        • 2013-04-24
        • 2022-01-24
        • 1970-01-01
        • 2019-10-09
        • 2021-12-20
        相关资源
        最近更新 更多