回答編集履歴
6
ガベージコレクションの記述を追加
answer
CHANGED
@@ -17,6 +17,9 @@
|
|
17
17
|
「a = "abc"」という代入式を評価すると、
|
18
18
|
{型:str, 値:'abc'} というインスタンスがメモリ中のどこかにあって、
|
19
19
|
変数 a はそのインスタンスを参照するだけです。
|
20
|
+
a が以前に参照していた {型:int, 値:123} というインスタンスは
|
21
|
+
参照されなくなったのでシステムのメモリ管理(ガベージコレクション)に
|
22
|
+
よってメモリから削除されるかもしれません。
|
20
23
|
|
21
24
|
「a001 = Student()」では Student() でインスタンスが生成され
|
22
25
|
そのインスタンスに a001 という名前が付きました。
|
@@ -44,4 +47,12 @@
|
|
44
47
|
Student は {型:class, メソッド:avg} を参照していると考えましょう。
|
45
48
|
|
46
49
|
Student() で作ったインスタンスは、アトリビュート name を追加すると、
|
47
|
-
{型:Student, アトリビュート:name} となります。
|
50
|
+
{型:Student, アトリビュート:name} となります。
|
51
|
+
|
52
|
+
**追記**
|
53
|
+
参照されなくなったインスタンス(オブジェクト)がメモリから削除されるという
|
54
|
+
説明を追加しました。
|
55
|
+
|
56
|
+
質問に対して回答しているのだから、何かコメントをお願いします。
|
57
|
+
理解できたのかできなかったのか、あるいは説明が長いので読んでいないなど
|
58
|
+
何でも構いません。
|
5
誤字修正
answer
CHANGED
@@ -38,10 +38,10 @@
|
|
38
38
|
|
39
39
|
**追記**
|
40
40
|
ちょっと訂正します。
|
41
|
-
|
41
|
+
Student() で作ったインスタンスは {型:Student} です。
|
42
42
|
メソッドもアトリビュートもありません。
|
43
43
|
メソッドを持っているのは Student です。
|
44
44
|
Student は {型:class, メソッド:avg} を参照していると考えましょう。
|
45
45
|
|
46
|
-
|
46
|
+
Student() で作ったインスタンスは、アトリビュート name を追加すると、
|
47
47
|
{型:Student, アトリビュート:name} となります。
|
4
説明の訂正を追加
answer
CHANGED
@@ -34,4 +34,14 @@
|
|
34
34
|
self には a001 の参照値がコピーされるだけで、
|
35
35
|
a001 が参照していたインスタンスそのものがコピーされるのではありません。
|
36
36
|
Student() で作ったインスタンスは一つのままです。
|
37
|
-
self も a001 もその一つのインスタンスを参照しているのです。
|
37
|
+
self も a001 もその一つのインスタンスを参照しているのです。
|
38
|
+
|
39
|
+
**追記**
|
40
|
+
ちょっと訂正します。
|
41
|
+
Studen() で作ったインスタンスは {型:Student} です。
|
42
|
+
メソッドもアトリビュートもありません。
|
43
|
+
メソッドを持っているのは Student です。
|
44
|
+
Student は {型:class, メソッド:avg} を参照していると考えましょう。
|
45
|
+
|
46
|
+
Studen() で作ったインスタンスは、アトリビュート name を追加すると、
|
47
|
+
{型:Student, アトリビュート:name} となります。
|
3
説明の修正
answer
CHANGED
@@ -5,8 +5,9 @@
|
|
5
5
|
代入は「変数名 = 値」という形式ですが、
|
6
6
|
「値」はインスタンス(オブジェクト) です。
|
7
7
|
「変数」は「箱」と説明していますが、その箱にインスタンスは入りません。
|
8
|
-
箱にはインスタンスへの参照が入るのです。
|
8
|
+
箱にはインスタンスへの参照値が入るのです。
|
9
|
-
参照はインスタンスがメモリ中のどこにあるのかが分かる値
|
9
|
+
参照値はインスタンスがメモリ中のどこにあるのかが分かる値です。
|
10
|
+
変数はインスタンスを参照します。
|
10
11
|
|
11
12
|
「a = 123」という代入式を評価すると、
|
12
13
|
{型:int, 値:123} というインスタンスがメモリ中のどこかにあって、
|
2
説明の修正
answer
CHANGED
@@ -20,9 +20,9 @@
|
|
20
20
|
「a001 = Student()」では Student() でインスタンスが生成され
|
21
21
|
そのインスタンスに a001 という名前が付きました。
|
22
22
|
そのインスタンスは {型:Student, メソッド:avg} です。
|
23
|
-
「a001.name = "sato"
|
23
|
+
「a001.name = "sato"」で Studentクラスのインスタンスは、
|
24
24
|
{型:Student, メソッド:avg, アトリビュート:name} になりました。
|
25
|
-
name は {型:str, 値:
|
25
|
+
name は {型:str, 値:'sato'} というインスタンスを参照しています。
|
26
26
|
|
27
27
|
(3)
|
28
28
|
「a001.avg(30,70)」を実行すると、
|
1
誤字修正
answer
CHANGED
@@ -32,5 +32,5 @@
|
|
32
32
|
としてから、「print((math + english)/2) が実行されます。
|
33
33
|
self には a001 の参照値がコピーされるだけで、
|
34
34
|
a001 が参照していたインスタンスそのものがコピーされるのではありません。
|
35
|
-
|
35
|
+
Student() で作ったインスタンスは一つのままです。
|
36
36
|
self も a001 もその一つのインスタンスを参照しているのです。
|