teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

6

ガベージコレクションの記述を追加

2020/08/17 03:00

投稿

kazuma-s
kazuma-s

スコア8222

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

誤字修正

2020/08/17 02:59

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -38,10 +38,10 @@
38
38
 
39
39
  **追記**
40
40
  ちょっと訂正します。
41
- Studen() で作ったインスタンスは {型:Student} です。
41
+ Student() で作ったインスタンスは {型:Student} です。
42
42
  メソッドもアトリビュートもありません。
43
43
  メソッドを持っているのは Student です。
44
44
  Student は {型:class, メソッド:avg} を参照していると考えましょう。
45
45
 
46
- Studen() で作ったインスタンスは、アトリビュート name を追加すると、
46
+ Student() で作ったインスタンスは、アトリビュート name を追加すると、
47
47
  {型:Student, アトリビュート:name} となります。

4

説明の訂正を追加

2020/08/16 06:45

投稿

kazuma-s
kazuma-s

スコア8222

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

説明の修正

2020/08/16 02:48

投稿

kazuma-s
kazuma-s

スコア8222

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

説明の修正

2020/08/16 01:47

投稿

kazuma-s
kazuma-s

スコア8222

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, 値:"sato"} というインスタンスを参照しています。
25
+ name は {型:str, 値:'sato'} というインスタンスを参照しています。
26
26
 
27
27
  (3)
28
28
  「a001.avg(30,70)」を実行すると、

1

誤字修正

2020/08/16 00:39

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -32,5 +32,5 @@
32
32
  としてから、「print((math + english)/2) が実行されます。
33
33
  self には a001 の参照値がコピーされるだけで、
34
34
  a001 が参照していたインスタンスそのものがコピーされるのではありません。
35
- Sutuden() で作ったインスタンスは一つのままです。
35
+ Student() で作ったインスタンスは一つのままです。
36
36
  self も a001 もその一つのインスタンスを参照しているのです。