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
2 つの参照のいずれかを介して に変更を加えると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