回答編集履歴

2

誤回答につき削除申請中

2019/03/22 13:25

投稿

nico25
nico25

スコア830

test CHANGED
@@ -1,113 +1 @@
1
- `オブジェクト.メソッド()` と書いたとき self には `メソッド` を呼び出した `オブジェクト` が代入されます。
2
-
3
-
4
-
5
- 末尾のサンプルコードをコピペして実行して見てください。 全く同じものが表示されることから self にはメソッド func を呼び出した a が代入されていることがわかります。
6
-
7
-
8
-
9
-
10
-
11
- #### 1. より正確に self は、なにか?
12
-
13
- self は関数の第一引数、最初の引数です。
14
-
15
- * [Python の関数とメソッドの違いってなに?](https://python.ms/object/class/method/)
16
-
17
-
18
-
19
-
20
-
21
- #### 2. 数字は、なにか?
22
-
23
- > データのある場所を渡しているのだと思いますが、なんのデータなんでしょうか?
24
-
25
-
26
-
27
- identity という数字です。identity は id 関数で調べることができます。Python は、この数字を使ってオブジェクトを識別しています。
28
-
29
- * [Python の id 関数, identity ってなに?](https://python.ms/object/identity/)
30
-
31
-
32
-
33
-
34
-
35
- #### 3. サンプルコード
36
-
37
-
38
-
39
- ```python
40
-
41
- class Test:
1
+ 誤回答につき削除申請中
42
-
43
- def __init__(self, var):
44
-
45
- self.v= var
46
-
47
-
48
-
49
- def func(self):
50
-
51
- print(self)
52
-
53
- print(hex(id(self)))
54
-
55
-
56
-
57
- a = Test("aaa")
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
- #
66
-
67
- # 1 と 2 で同じものが出力されます。
68
-
69
- # -> a と self は同じものを指さしているということ
70
-
71
- #
72
-
73
-
74
-
75
- # 1) self を表示
76
-
77
- a.func()
78
-
79
-
80
-
81
- # 2) a を表示
82
-
83
- print(a)
84
-
85
- print(hex(id(a)))
86
-
87
- ```
88
-
89
- ```
90
-
91
- >>> # self を表示
92
-
93
- ... a.func()
94
-
95
- <__main__.Test object at 0x1067d6e48>
96
-
97
- 0x1067d6e48
98
-
99
- >>>
100
-
101
- >>> # a を表示
102
-
103
- ... print(a)
104
-
105
- <__main__.Test object at 0x1067d6e48>
106
-
107
- >>> print(hex(id(a)))
108
-
109
- 0x1067d6e48
110
-
111
- >>>
112
-
113
- ```

1

誤字修正

2019/03/22 13:25

投稿

nico25
nico25

スコア830

test CHANGED
@@ -40,15 +40,13 @@
40
40
 
41
41
  class Test:
42
42
 
43
- def __init__(self,var):
43
+ def __init__(self, var):
44
44
 
45
45
  self.v= var
46
46
 
47
47
 
48
48
 
49
49
  def func(self):
50
-
51
- #
52
50
 
53
51
  print(self)
54
52