回答編集履歴

2

説明の追加

2017/05/04 15:27

投稿

miyahan
miyahan

スコア3095

test CHANGED
@@ -1,4 +1,4 @@
1
- いくつもの変数を複数の関数から扱う場合、クラスを使うことをおすすめします。
1
+ いくつもの変数を複数の関数から扱う場合、クラス(オブジェクト)を使うことをおすすめします。
2
2
 
3
3
  たとえばこんな感じです。
4
4
 
@@ -118,7 +118,7 @@
118
118
 
119
119
 
120
120
 
121
- これは "Point" というクラスの中に、width, height, x, y といった変数(インスタンス変数)と、ポイントを移動させる関数(メソッド)セットで納められてます。
121
+ これは "Point" というクラスの中に、width, height, x, y といった変数(インスタンス変数)と、ポイントを移動させる関数(インスタンスメソッド)セットで納めてます。
122
122
 
123
123
 
124
124
 
@@ -134,7 +134,7 @@
134
134
 
135
135
 
136
136
 
137
- またクラスを使うことで機能の拡張も簡単にできます。x,y を反転させるメソッドを追加するなら、こんなコードですみます。
137
+ またクラスを使うことで機能の拡張も簡単にできます。例えば、x,y を反転させるメソッドを追加するなら、こんなコードですみます。
138
138
 
139
139
 
140
140
 
@@ -152,4 +152,36 @@
152
152
 
153
153
 
154
154
 
155
+ また、もし複数のポイントを同時に扱わないといけなくなった場合、元のコードだと処理が非常に複雑になってしまいますが、クラスを使うことでデータを呼び出し元(main)で管理しなくてよいので簡単に実現できます。
156
+
157
+
158
+
159
+ ```python
160
+
161
+ point1 = Point(width=640, height=480, x=10, y=20)
162
+
163
+ point2 = Point(width=640, height=480, x=100, y=50)
164
+
165
+ point3 = Point(width=640, height=480, x=0, y=0)
166
+
167
+
168
+
169
+ point1.move_up(100)
170
+
171
+ point2.move_left(-10)
172
+
173
+ point3.move_down(50)
174
+
175
+
176
+
177
+ print(point1.x, point1.y)
178
+
179
+ print(point2.x, point2.y)
180
+
181
+ print(point3.x, point3.y)
182
+
183
+ ```
184
+
185
+
186
+
155
187
  とても便利ですので、ぜひ学習してみてください。

1

インスタンス変数についての説明の追加

2017/05/04 15:27

投稿

miyahan
miyahan

スコア3095

test CHANGED
@@ -118,23 +118,23 @@
118
118
 
119
119
 
120
120
 
121
- これは "Point" というクラスの中に、width, height, x, y といった変数と、ポイントを移動させる関数(メソッド)がセットで納められてます。
121
+ これは "Point" というクラスの中に、width, height, x, y といった変数(インスタンス変数)と、ポイントを移動させる関数(メソッド)がセットで納められてます。
122
122
 
123
123
 
124
124
 
125
- クラスを使うようなメリッがあります。
125
+ * グローバル変数: どこでも使える。それゆえに衝突などのトラブルの原因に...
126
+
127
+ * ローカル変数: その関数内だけで使える。なのでほかの関数に引数としていちいち渡さないといけない
128
+
129
+ * インスタンス変数: そのクラス(インスタンス)内だけで使える。なので同クラス内の関数同士で共有できる。でもグローバルからは見えない
126
130
 
127
131
 
128
132
 
129
- * クラス内に変数を持たせているので、関数の引数が最小限で済む
130
-
131
- * クラ内に変数を持たで、呼び出し側で値管理し済む
133
+ と、インタンス変数は「必要な範囲で使い回る」とうグローバル変数やローカル変数取った絶妙特性を持っいます。
132
-
133
- * 関数を追加して、機能拡張するのが簡単
134
134
 
135
135
 
136
136
 
137
- たとえば、x,y を反転させるメソッドを追加するなら、こんなコードですみます。
137
+ クラスを使うこで機能の拡張も簡単にできます。x,y を反転させるメソッドを追加するなら、こんなコードですみます。
138
138
 
139
139
 
140
140