インスタンスと変数の関係
Pythonで使われる変数にはインスタンスそのものではなくオブジェクトIDが格納される。これはインスタンスに対して一意に割り当てられた値であり、利用しようとするインスタンスの指定に利用される。
次の命令が与えられたときの動作を丁寧に解説しよう。
>>> x = 3
1.まず、「3」の部分が評価され、int型インスタンス「3」がメモリ上に生成される。
2.「3」の跡地には、生成したインスタンスのオブジェクトIDが返される。
>>> x = 【オブジェクトID】
3.オブジェクトIDが変数xに代入される。これで、変数xとインスタンス「3」とが対応付けられる。
C言語におけるポインタとよく似た仕組みであることに注意。本資料では上の代入処理を以下のように表現する。
変数をインスタンスに割り当てた
変数に代入した
C言語との比較
Pythonにおける変数とインスタンスの関係を図示する。インスタンスはメモリ上の適当な箇所に置かれ、そのインスタンスIDを変数に格納する。ここではインスタンス「3」のオブジェクトIDを「#10」と表記している。ここで示すように変数名が指す領域にはインスタンス「3」は格納されおらず、オブジェクトIDが格納されている。
https://scrapbox.io/files/65024df0cbed0d001bb42fdd.png
なお、C言語における代入処理では、変数名が指す領域に直接データが書き込まれる。上と同様の処理は次のように図示することができる。
code:assign1.c
#include<stdio.h>
int main(void){
int x = 3;
return 0;
}
https://scrapbox.io/files/65024da894a93a001c59f222.png
/icons/hr.icon
※ ブラウザのバックボタンで戻る