我要做的是保持三个变量相等,而不必每次都分配它们。
ans = '12345...n'
或者换句话说,如果我有很多变量,如果其中之一发生变化,如何使其他变量也发生变化?
a=b=c=4
b=10
print a,b,c # 4 10 4
如何在整个代码中保持多个变量相等? 我知道我可以轻松地重新分配他们。 有没有比这更好的方法了?还是我必须每次都分配所有变量?
答案 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