引用变量

Mas*_*rry 1 python reference python-2.7

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

int x = 10;
int &y = x;
y = 11;
cout << x << endl; // will print 11
Run Code Online (Sandbox Code Playgroud)

我怎么能在python中做类似的事情?试图self.session引用self.request.session:

self.session = self.request.session
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 7

以下将使两者self.sessionself.request.session引用相同的对象:

self.session = self.request.session
Run Code Online (Sandbox Code Playgroud)

如果您session通过两个引用中的任何一个进行更改,您将能够通过以下两者来观察更改:

 self.session.set_foo(42)
 self.request.session.get_foo() # returns 42
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您通过将其引用到其他地方来重新引用任一引用,那将会破坏链接:

 self.session = another_session
Run Code Online (Sandbox Code Playgroud)

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

这与您的C++示例相关.如果你想拥有一个共享引用int,并且能够修改它int,你必须将int一个可变对象包装在内部,并分享对该可变对象的引用.