基本的に私の質問は、Pythonの関数に引数を渡し、それに他の値を代入してからその値を変更すると、両方の値が変更されるか、ただ一つになりますか? Pythonで関数の引数がどのくらい正確に渡されますか?言い換えれば引数はどのようにPythonの関数に渡されますか?
、次のように私は定義されたいくつかのクラスAを持っていたと言う:
クラスBは、いくつかのクラスであるclass A(object):
def __init__(self, b):
self._b = b
class B(object):
def increment():
# Do something
...
(それが正確に何を本当に問題ではありません)とbと_bの両方のタイプがありますB.私が次のことをした場合:
instanceOfB = B()
instanceOfA = A(instanceOfB)
instanceOfA._b.increment()
instanceOfBは変更されますか、それとも同じになりますか?
この質問が明確になることを願っています。私は何を求めているのかを説明するのに苦労しているので、自由に質問してください!
に依存します。あなたが渡しているものが参照であり、リストにあるとしたら、その参照のコピーを変更するとそれらのすべてに影響を与えます。それが不変のオブジェクト、例えば文字列または整数またはタプルである場合、すべてのコピーは独立しています。つまり、これは実際に関数呼び出しとは関係がありません。あなたは割り当てとまったく同じ振る舞いをします。 –
...それは: 'a =; b = a;あなたの値が ''の 'a'を変更した場合、同じ振る舞いがその代入の背後にある関数呼び出しの後ろで起こります。関数呼び出しはそれとは関係ありません。 –
'instanceOfB'と' instanceOfA._b' **の両方が同じ**オブジェクト**に**指しています**もしそのオブジェクトが変化すればすべてのポインタはその変更を反映しますが、一方の変数が別の値に割り当てられているとinstanceOfB = 4')これは他のポインタには影響しません。 –