如何保持多个变量相等而不每次都分配给它们?

时间:2018-06-23 16:39:21

标签: python variables variable-assignment

我要做的是保持三个变量相等,而不必每次都分配它们。

ans = '12345...n'

或者换句话说,如果我有很多变量,如果其中之一发生变化,如何使其他变量也发生变化?

a=b=c=4
b=10
print a,b,c # 4 10 4

如何在整个代码中保持多个变量相等? 我知道我可以轻松地重新分配他们。 有没有比这更好的方法了?还是我必须每次都分配所有变量?

1 个答案:

答案 0 :(得分:0)

这是一种将我在评论中提出的建议形式化的面向对象方法,这基本上是将共享对象放在可变容器(如列表)中。

from __future__ import print_function

class Mutable(object):
    def __init__(self, value):
        self._value = [value]

    def get_value(self):
        return self._value[0]

    def set_value(self, value):
        self._value[0] = value

    value = property(get_value, set_value)

    def __repr__(self):
         return repr(self.get_value())

class Pointer(Mutable):
    def __init__(self, obj):
        if not isinstance(obj, (Mutable, Pointer)):
            raise ValueError(
                "{!r} is not a object of type Mutable or Pointer".format(obj))
        self._value = obj._value


if __name__ == '__main__':

    a = Mutable(0)
    b = Pointer(a)
    c = Pointer(b)
    print(a, b, c)  # -> 0 0 0
    a.value = 13
    print(a, b, c)  # -> 13 13 13
    b.value = 42
    print(a, b, c)  # -> 42 42 42