在 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
在 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
以下将同时生成self.session
并self.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
在一个可变对象内部,并改为共享对该可变对象的引用。
在python中,一切都是对对象的引用。赋值运算符创建对右侧引用的对象的新引用。
考虑:
a = [1,2]
b = a
b.append(3)
print a #prints [1, 2, 3]
您的示例代码执行您想要的操作——创建对该self.request.session
对象的新引用。不过要小心。请记住,对名称执行另一个分配self.request
现在将导致self.request
引用不同的对象。