引用变量

时间:2012-12-17 16:22:23

标签: python reference python-2.7

在C ++中,您可以执行以下操作:

int x = 10;
int &y = x;
y = 11;
cout << x << endl; // will print 11

我如何在python中做类似的事情?尝试self.session引用self.request.session

self.session = self.request.session

2 个答案:

答案 0 :(得分:7)

以下内容将使self.sessionself.request.session引用同一个对象:

self.session = self.request.session

如果您通过两个引用中的任何一个对session进行了更改,您将能够通过两者进行更改:

 self.session.set_foo(42)
 self.request.session.get_foo() # returns 42

另一方面,如果你重新绑定引用它指向其他地方,那将会破坏链接:

 self.session = another_session

最后,重要的是要注意某些Python类型是不可变的。这包括整数,字符串和元组。虽然您可以对不可变对象进行多次引用,但不可变性会阻止您对该对象进行任何更改。

根据您的C ++示例,这是相关的。如果您希望对int具有共享引用,并且能够修改int,则必须将int包装在可变对象中,并共享对该​​引用的引用相反,可变对象。

答案 1 :(得分:3)

在python中,一切都是对象的引用。赋值运算符创建对右侧引用的对象的新引用。

考虑:

a = [1,2]
b = a
b.append(3)
print a  #prints [1, 2, 3]

您的示例代码可以执行您想要的操作 - 创建对self.request.session对象的新引用。但要小心。请记住,对名称self.request执行另一次授权现在会导致self.request引用不同的对象。