質問編集履歴

2

2019/11/28 14:58

投稿

azuapricot
azuapricot

スコア2341

test CHANGED
File without changes
test CHANGED
@@ -241,3 +241,15 @@
241
241
 
242
242
 
243
243
  お時間あるときで構いませんので、ご教示いただけますと幸いです・・・。
244
+
245
+
246
+
247
+ ---
248
+
249
+
250
+
251
+ 教えて頂いたこの↓サイトものすごく、ものすごくわかりやすいかもしれない・・・ぽんこつにもわかる・・・
252
+
253
+ [classmethod と
254
+
255
+ staticmethod ってなに?](https://python.ms/classmethod-and-staticmethod/#_2-%E3%82%B9%E3%82%BF%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89)

1

回答を受けての質問の追記

2019/11/28 14:58

投稿

azuapricot
azuapricot

スコア2341

test CHANGED
File without changes
test CHANGED
@@ -90,9 +90,7 @@
90
90
 
91
91
  私のイメージ的には、 ``` method2() ``` はスタティックメソッドになるのではと思っています。(変換処理だけだし・・・)
92
92
 
93
-
94
-
95
- ``` method1 ``` はただなんとなく、インスタンスメソッドか、クラスメソッドになる気がしています。あくまでもselfを使いたい=インスタンスメソッド?という浅はかな考えによるものですが・・・・。
93
+ method1() はただなんとなく、インスタンスメソッドか、クラスメソッドになる気がしています。あくまでもselfを使いたい=インスタンスメソッド?という浅はかな考えによるものですが・・・・。
96
94
 
97
95
 
98
96
 
@@ -145,3 +143,101 @@
145
143
  お時間ある方でメソッドに関する知識をお持ちの方いらっしゃいましたら
146
144
 
147
145
  ご助力頂けますと幸いです・・・。
146
+
147
+
148
+
149
+
150
+
151
+ ---
152
+
153
+
154
+
155
+ ### 追記
156
+
157
+
158
+
159
+ 色々Googleを漁り、家にあったPython入門の参考書のオブジェクト指向のページを端から端まで読んで
160
+
161
+ さらにこんなわかりにくい質問に回答して頂いたお二方の回答も読んだうえで、まだ理解できないぽんこつなので追記で質問させていただきます。
162
+
163
+
164
+
165
+ > もし、インスタンスを参照せずにクラスだけ参照する場合は、@classmethod を
166
+
167
+ もし、インスタンスもクラスも参照しない場合は、@staticmethod を使い、
168
+
169
+
170
+
171
+ 多分私が理解できていないのはこの **クラスだけ参照する場合** ってどういうことなの・・・っていう根本的なところが分かっていないせいかなと思います。
172
+
173
+
174
+
175
+ 下記に私のイメージを書いてみようと思います。
176
+
177
+
178
+
179
+
180
+
181
+ ```Python
182
+
183
+ class TestCommon:
184
+
185
+ test = "てすと"
186
+
187
+   
188
+
189
+   @classmethod
190
+
191
+ def method1(cls):
192
+
193
+ """ 予想:クラスメソッド (クラスのみの参照?) """
194
+
195
+ # メンバ変数を参照=クラスだけ参照?
196
+
197
+ print(cls.test)
198
+
199
+
200
+
201
+ def method2(self):
202
+
203
+ """ 予想:インスタンスメソッド(クラスとインスタンス両方参照?) """
204
+
205
+ # selfを使わずにクラス名.メンバ変数で呼び出し?
206
+
207
+ print(TestCommon.test)
208
+
209
+ # インスタンスを参照?
210
+
211
+ print(self.request.POST)
212
+
213
+
214
+
215
+ def method3(self):
216
+
217
+ """ 予想:インスタンスメソッド(クラス参照なし?) """
218
+
219
+ print(self.request.POST)
220
+
221
+
222
+
223
+ @staticmethod
224
+
225
+ def method4(data):
226
+
227
+ """ 予想:スタティックメソッドにすると引数エラー? """
228
+
229
+ # 引数取らない=受け取れない???
230
+
231
+ return data
232
+
233
+
234
+
235
+ ```
236
+
237
+
238
+
239
+ 今の私の認識は上記のような感じになっているのですが、これは合っていますでしょうか・・・
240
+
241
+
242
+
243
+ お時間あるときで構いませんので、ご教示いただけますと幸いです・・・。