teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

2019/11/28 14:58

投稿

azuapricot
azuapricot

スコア2343

title CHANGED
File without changes
body CHANGED
@@ -119,4 +119,10 @@
119
119
 
120
120
  今の私の認識は上記のような感じになっているのですが、これは合っていますでしょうか・・・
121
121
 
122
- お時間あるときで構いませんので、ご教示いただけますと幸いです・・・。
122
+ お時間あるときで構いませんので、ご教示いただけますと幸いです・・・。
123
+
124
+ ---
125
+
126
+ 教えて頂いたこの↓サイトものすごく、ものすごくわかりやすいかもしれない・・・ぽんこつにもわかる・・・
127
+ [classmethod と
128
+ 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

スコア2343

title CHANGED
File without changes
body CHANGED
@@ -44,9 +44,8 @@
44
44
  → インスタンスメソッドが各インスタンスに結びつくのに対して、classmethodはクラスに結びつきます。メソッドを呼び出した時に第一引数には、クラスが自動的に代入されます。
45
45
 
46
46
  私のイメージ的には、 ``` method2() ``` はスタティックメソッドになるのではと思っています。(変換処理だけだし・・・)
47
+ method1() はただなんとなく、インスタンスメソッドか、クラスメソッドになる気がしています。あくまでもselfを使いたい=インスタンスメソッド?という浅はかな考えによるものですが・・・・。
47
48
 
48
- ``` method1 ``` はただなんとなく、インスタンスメソッドか、クラスメソッドになる気がしています。あくまでもselfを使いたい=インスタンスメソッド?という浅はかな考えによるものですが・・・・。
49
-
50
49
  此方について認識があっているか(多分間違っているのでしょうけれども)教えて頂きたいです。
51
50
 
52
51
  ---
@@ -71,4 +70,53 @@
71
70
 
72
71
  ・・・そんなわけはないと思うので、大変恐縮ではありますが
73
72
  お時間ある方でメソッドに関する知識をお持ちの方いらっしゃいましたら
74
- ご助力頂けますと幸いです・・・。
73
+ ご助力頂けますと幸いです・・・。
74
+
75
+
76
+ ---
77
+
78
+ ### 追記
79
+
80
+ 色々Googleを漁り、家にあったPython入門の参考書のオブジェクト指向のページを端から端まで読んで
81
+ さらにこんなわかりにくい質問に回答して頂いたお二方の回答も読んだうえで、まだ理解できないぽんこつなので追記で質問させていただきます。
82
+
83
+ > もし、インスタンスを参照せずにクラスだけ参照する場合は、@classmethod を
84
+ もし、インスタンスもクラスも参照しない場合は、@staticmethod を使い、
85
+
86
+ 多分私が理解できていないのはこの **クラスだけ参照する場合** ってどういうことなの・・・っていう根本的なところが分かっていないせいかなと思います。
87
+
88
+ 下記に私のイメージを書いてみようと思います。
89
+
90
+
91
+ ```Python
92
+ class TestCommon:
93
+ test = "てすと"
94
+   
95
+   @classmethod
96
+ def method1(cls):
97
+ """ 予想:クラスメソッド (クラスのみの参照?) """
98
+ # メンバ変数を参照=クラスだけ参照?
99
+ print(cls.test)
100
+
101
+ def method2(self):
102
+ """ 予想:インスタンスメソッド(クラスとインスタンス両方参照?) """
103
+ # selfを使わずにクラス名.メンバ変数で呼び出し?
104
+ print(TestCommon.test)
105
+ # インスタンスを参照?
106
+ print(self.request.POST)
107
+
108
+ def method3(self):
109
+ """ 予想:インスタンスメソッド(クラス参照なし?) """
110
+ print(self.request.POST)
111
+
112
+ @staticmethod
113
+ def method4(data):
114
+ """ 予想:スタティックメソッドにすると引数エラー? """
115
+ # 引数取らない=受け取れない???
116
+ return data
117
+
118
+ ```
119
+
120
+ 今の私の認識は上記のような感じになっているのですが、これは合っていますでしょうか・・・
121
+
122
+ お時間あるときで構いませんので、ご教示いただけますと幸いです・・・。