回答編集履歴
3
コードのミスを訂正/説明補足
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
> 関数(def)の中でself.を着けない変数は、関数終了時に破棄される
|
2
2
|
|
3
|
-
概ねよいとも言えますが、この表現は不正確かも知れません。`self.`を付けないというのは「変数名を直接指定してアクセスする場合」という意味と思いますが、そのようにアクセスする変数は「ローカル変数」の場合と「グローバル変数」の場合があります。
|
3
|
+
概ねよいとも言えますが、この表現は不正確かも知れません。`self.`を付けないというのは「変数名を直接指定してアクセスする場合」という意味と思いますが、そのようにアクセスする変数は「ローカル変数」の場合と「グローバル変数」の場合があります。関数(メソッド)終了時に破棄されるのは「ローカル変数」の方だけです。
|
4
4
|
|
5
5
|
```Python
|
6
6
|
g1 = 1
|
@@ -10,7 +10,7 @@
|
|
10
10
|
def method1(self):
|
11
11
|
a = 1 # aはmethod1のローカル変数
|
12
12
|
print(g1) # g1はグローバル変数
|
13
|
-
global
|
13
|
+
global g2
|
14
14
|
g2 = 3 # g2もグローバル変数
|
15
15
|
```
|
16
16
|
|
2
コードのコメントを変更
answer
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
|
32
32
|
a = A()
|
33
33
|
print(a.x) # 1 (インスタンス変数xが優先されている)
|
34
|
-
print(A.x) # 2 (でもクラス名を指定すればアクセスできる)
|
34
|
+
print(A.x) # 2 (でもクラス名を指定すればクラス変数の方をアクセスできる)
|
35
|
-
print(a.y) # 3 (同
|
35
|
+
print(a.y) # 3 (同名のインスタンス変数がなければインスタンスを介してクラス変数にアクセスできる)
|
36
36
|
print(A.y) # 3 (でもクラス共通の変数なんだからクラス名でアクセスした方がいいんじゃないかな)
|
37
37
|
```
|
1
コードのミスを変更
answer
CHANGED
@@ -33,5 +33,5 @@
|
|
33
33
|
print(a.x) # 1 (インスタンス変数xが優先されている)
|
34
34
|
print(A.x) # 2 (でもクラス名を指定すればアクセスできる)
|
35
35
|
print(a.y) # 3 (同じ名前のインスタンス変数がなければ確かにクラス変数にアクセスできる)
|
36
|
-
print(A.y) #
|
36
|
+
print(A.y) # 3 (でもクラス共通の変数なんだからクラス名でアクセスした方がいいんじゃないかな)
|
37
37
|
```
|