Python多实例使用相同的变量

时间:2017-02-27 10:10:26

标签: python

我想在python中为两个实例使用一个变量。 当实例更新变量时,它也会在其他实例中更新。

我的变量是task_id:

class Task(object):     # pragma: no cover

    def run_deploy(self, args, **kwargs):
        # atexit.register(atexit_handler)
        self.task_id = kwargs.get('task_id', str(uuid.uuid4()))

    def start_benchmark(self, args, **kwargs):
        """Start a benchmark scenario."""
        atexit.register(atexit_handler)

        self.task_id = kwargs.get('task_id', str(uuid.uuid4()))

但是当我运行代码时,我发现task_id具有不同的值,我希望它们具有相同的值。

请告诉我怎么做。 谢谢!

2 个答案:

答案 0 :(得分:3)

在python中引用一个对象是微不足道的。这是一个使用类实例的简单示例:

class cl:
  var1 = 0
  def __init__(self, var2):
    self.var2 = var2

让我们看一下这个类的两个实例以及它们的更新方式:

>>> x = cl(1) #
>>> y=x
>>> print(y.var2)
1
>>> y.var2 = 2
>>> print(x.var2)
2

现在是关键部分:

>>> x is y
True

不要忘记ìs==不同。

两个实例的var1也是如此。

答案 1 :(得分:1)

在python中,一切都是引用。 变量只是您为对象引用提供的名称。您可以提供许多名称来引用同一个对象。

这就是python的工作原理,这正是你在这里所需要的。

E.g:

a = []  # a reference to an empty list, named "a"
b = a   # a reference to the same empty list, named "b"
a.append(5)  # modify, through the "a" reference
print(b)  # "b" still refers to the same list, which is not empty now
=> [5]