回答編集履歴

7

コメント補足

2022/10/26 05:55

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -3,11 +3,11 @@
3
3
  ローカル変数ではなくインスタンス変数であることを明示するために self. を付けます。インスタンス変数になければクラス変数を探索します。
4
4
 
5
5
  ```python
6
- age = 1 # グローバル変数
6
+ age = 1 # グローバル変数ageを定義して1を代入
7
7
  class Person:
8
- age = 2 # クラス変数
8
+ age = 2 # クラス変数ageを定義して2を代入
9
9
  def __init__(self, name): # nameはローカル変数
10
- self.name = name # インスタンス変数nameを作ってローカル変数nameを代入
10
+ self.name = name # インスタンス変数nameを定義してローカル変数nameを代入
11
11
  def talk(self, name):
12
12
  print('local:', name) # ローカル変数
13
13
  print('global: ', age) # ローカル変数にないのでグローバル変数

6

コメント変更

2022/10/26 05:53

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -7,7 +7,7 @@
7
7
  class Person:
8
8
  age = 2 # クラス変数
9
9
  def __init__(self, name): # nameはローカル変数
10
- self.name = name # インスタンス変数nameローカル変数nameを代入
10
+ self.name = name # インスタンス変数nameを作ってローカル変数nameを代入
11
11
  def talk(self, name):
12
12
  print('local:', name) # ローカル変数
13
13
  print('global: ', age) # ローカル変数にないのでグローバル変数

5

コメント変更

2022/10/26 05:49

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -7,7 +7,7 @@
7
7
  class Person:
8
8
  age = 2 # クラス変数
9
9
  def __init__(self, name): # nameはローカル変数
10
- self.name = name # ローカル変数nameをインスタンス変数nameに代入
10
+ self.name = name # インスタンス変数nameにローカル変数nameを代入
11
11
  def talk(self, name):
12
12
  print('local:', name) # ローカル変数
13
13
  print('global: ', age) # ローカル変数にないのでグローバル変数

4

インデント調整

2022/10/26 04:57

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -7,7 +7,7 @@
7
7
  class Person:
8
8
  age = 2 # クラス変数
9
9
  def __init__(self, name): # nameはローカル変数
10
- self.name = name # ローカル変数nameをインスタンス変数nameに代入
10
+ self.name = name # ローカル変数nameをインスタンス変数nameに代入
11
11
  def talk(self, name):
12
12
  print('local:', name) # ローカル変数
13
13
  print('global: ', age) # ローカル変数にないのでグローバル変数

3

メソッド名変更、print追加

2022/10/26 04:54

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -7,14 +7,15 @@
7
7
  class Person:
8
8
  age = 2 # クラス変数
9
9
  def __init__(self, name): # nameはローカル変数
10
- self.name = name # ローカル変数nameをインスタンス変数nameに代入
10
+ self.name = name # ローカル変数nameをインスタンス変数nameに代入
11
- def print(self, name):
11
+ def talk(self, name):
12
12
  print('local:', name) # ローカル変数
13
13
  print('global: ', age) # ローカル変数にないのでグローバル変数
14
14
  print('instance:', self.name) # インスタンス変数
15
15
  print('class:', self.age) # インスタンス変数にないのでクラス変数
16
+ print(self.name, 'は', name, 'に話しかけた')
16
17
 
17
- Person('Taro').print('Hanako')
18
+ Person('Taro').talk('Hanako')
18
19
  ```
19
20
 
20
21
  ```text:実行結果
@@ -22,6 +23,7 @@
22
23
  global: 1
23
24
  instance: Taro
24
25
  class: 2
26
+ Taro は Hanako に話しかけた
25
27
  ```
26
28
 
27
29
  ---

2

説明追記

2022/10/26 04:47

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,3 +1,31 @@
1
+ 追記:
2
+ Pythonでは、self. を付けない変数はメソッド(関数)のローカル変数です。ローカル変数になければグローバル変数を探索します。
3
+ ローカル変数ではなくインスタンス変数であることを明示するために self. を付けます。インスタンス変数になければクラス変数を探索します。
4
+
5
+ ```python
6
+ age = 1 # グローバル変数
7
+ class Person:
8
+ age = 2 # クラス変数
9
+ def __init__(self, name): # nameはローカル変数
10
+ self.name = name # ローカル変数nameをインスタンス変数nameに代入
11
+ def print(self, name):
12
+ print('local:', name) # ローカル変数
13
+ print('global: ', age) # ローカル変数にないのでグローバル変数
14
+ print('instance:', self.name) # インスタンス変数
15
+ print('class:', self.age) # インスタンス変数にないのでクラス変数
16
+
17
+ Person('Taro').print('Hanako')
18
+ ```
19
+
20
+ ```text:実行結果
21
+ local: Hanako
22
+ global: 1
23
+ instance: Taro
24
+ class: 2
25
+ ```
26
+
27
+ ---
28
+
1
29
  それなら、クラスにするまでもなく、関数でいいですね。
2
30
 
3
31
  ```py

1

引数名修正

2022/10/26 03:36

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,7 +1,7 @@
1
1
  それなら、クラスにするまでもなく、関数でいいですね。
2
2
 
3
3
  ```py
4
- def printName(self):
4
+ def printName(name):
5
5
  print("私は" + name + "です。")
6
6
  ```
7
7