我想在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具有不同的值,我希望它们具有相同的值。
请告诉我怎么做。 谢谢!
答案 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]