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

回答編集履歴

5

追記

2019/11/28 15:11

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -63,6 +63,7 @@
63
63
  ## (これ!という答えは見たことないかも。self.__class__.testかtype(self).testの二択になり、後者のほうがどちらかというと良いということになりそうですが)
64
64
  ## https://qiita.com/FGtatsuro/items/be22c520e62a1d100e09
65
65
  ## https://stackoverflow.com/questions/25577578/access-class-variable-from-instance
66
+ ## https://python.ms/attribute/#_2-%E3%82%AF%E3%83%A9%E3%82%B9%E5%A4%89%E6%95%B0%E3%81%AE%E5%8F%82%E7%85%A7%E3%81%AE%E4%BB%95%E6%96%B9
66
67
  def method2(self):
67
68
  """ 予想:インスタンスメソッド(クラスとインスタンス両方参照?) """
68
69
  # selfを使わずにクラス名.メンバ変数で呼び出し?

4

追記に関して

2019/11/28 15:11

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -35,4 +35,54 @@
35
35
  [Python の関数とメソッドの違いってなに? | Mastering Python](https://python.ms/method/#_3-%E8%A7%A6%E3%81%A3%E3%81%A6%E6%AF%94%E8%BC%83%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B%E3%80%82)
36
36
 
37
37
  あとここも見ておくべきです。
38
- [なぜメソッドの定義や呼び出しにおいて 'self' を明示しなければならないのですか? | デザインと歴史 FAQ — Python 3.8.0 ドキュメント](https://docs.python.org/ja/3/faq/design.html#why-must-self-be-used-explicitly-in-method-definitions-and-calls)
38
+ [なぜメソッドの定義や呼び出しにおいて 'self' を明示しなければならないのですか? | デザインと歴史 FAQ — Python 3.8.0 ドキュメント](https://docs.python.org/ja/3/faq/design.html#why-must-self-be-used-explicitly-in-method-definitions-and-calls)
39
+
40
+ ###### 追記に関して
41
+ ```python
42
+ ## 私が付けたコメントはこのように二重の#で示すことにします
43
+
44
+ class TestCommon:
45
+ ## このtestは他の言語で言うところのクラス変数であり、
46
+ ## インスタンス変数は同様には作れません
47
+ ## (__init__でselfの属性に対して代入して作ったりするが、それは特別な操作ではない
48
+ ## (__init__以外の場所でもできる))
49
+ test = "てすと"
50
+
51
+ ## これは実際こんな感じ
52
+   @classmethod
53
+ def method1(cls):
54
+ """ 予想:クラスメソッド (クラスのみの参照?) """
55
+ # メンバ変数を参照=クラスだけ参照?
56
+ print(cls.test)
57
+
58
+
59
+ ## TestCommon.testはいかにも駄目な感じがします
60
+ ## 参照だけならself.testでも同じ結果が得られます。ただしこれに代入すると、
61
+ ## self.test(インスタンス変数)がクラス変数とは別に作られてしまいます
62
+ ## インスタンスメソッドからクラス変数に代入する場合のやり方は悩ましい問題です
63
+ ## (これ!という答えは見たことないかも。self.__class__.testかtype(self).testの二択になり、後者のほうがどちらかというと良いということになりそうですが)
64
+ ## https://qiita.com/FGtatsuro/items/be22c520e62a1d100e09
65
+ ## https://stackoverflow.com/questions/25577578/access-class-variable-from-instance
66
+ def method2(self):
67
+ """ 予想:インスタンスメソッド(クラスとインスタンス両方参照?) """
68
+ # selfを使わずにクラス名.メンバ変数で呼び出し?
69
+ print(TestCommon.test)
70
+ # インスタンスを参照?
71
+ print(self.request.POST)
72
+
73
+
74
+ ## これは実際こう
75
+ def method3(self):
76
+ """ 予想:インスタンスメソッド(クラス参照なし?) """
77
+ print(self.request.POST)
78
+
79
+
80
+ ## selfやclsに類するものを取らないだけで、引数自体は何ら問題なく受けとれます
81
+ ## インスタンスメソッドのときの第二引数以降は問題なく与えられるということです
82
+ ## 私の書き方が悪かったかも
83
+ @staticmethod
84
+ def method4(data):
85
+ """ 予想:スタティックメソッドにすると引数エラー? """
86
+ # 引数取らない=受け取れない???
87
+ return data
88
+ ```

3

追記

2019/11/28 15:08

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -1,3 +1,5 @@
1
+ Python3系を前提に回答します。2以前は仕様が違います。
2
+
1
3
  ###### 直接の回答
2
4
  - インスタンスメソッド
3
5
  インスタンスの属性を触りたいときに使います。
@@ -30,4 +32,7 @@
30
32
 
31
33
  公式ではないですが、こちらのページも参考になります。わかりやすいので仕組みが気になるなら読んでください。
32
34
  (と思って貼り付けたら、先にこのサイトの著者の[nico25さん](https://teratail.com/users/nico25)が[回答されてしまった・・・](https://teratail.com/questions/226164#reply-330699))
33
- [Python の関数とメソッドの違いってなに? | Mastering Python](https://python.ms/method/#_3-%E8%A7%A6%E3%81%A3%E3%81%A6%E6%AF%94%E8%BC%83%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B%E3%80%82)
35
+ [Python の関数とメソッドの違いってなに? | Mastering Python](https://python.ms/method/#_3-%E8%A7%A6%E3%81%A3%E3%81%A6%E6%AF%94%E8%BC%83%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B%E3%80%82)
36
+
37
+ あとここも見ておくべきです。
38
+ [なぜメソッドの定義や呼び出しにおいて 'self' を明示しなければならないのですか? | デザインと歴史 FAQ — Python 3.8.0 ドキュメント](https://docs.python.org/ja/3/faq/design.html#why-must-self-be-used-explicitly-in-method-definitions-and-calls)

2

追記

2019/11/28 13:44

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -29,5 +29,5 @@
29
29
  [Python 言語リファレンス — Python 3.8.0 ドキュメント](https://docs.python.org/ja/3/reference/index.html)
30
30
 
31
31
  公式ではないですが、こちらのページも参考になります。わかりやすいので仕組みが気になるなら読んでください。
32
- (と思って貼り付けたら、先にこのサイトの著者のnico25さんが回答されてしまった・・・)
32
+ (と思って貼り付けたら、先にこのサイトの著者の[nico25さん](https://teratail.com/users/nico25)[回答されてしまった・・・](https://teratail.com/questions/226164#reply-330699)
33
33
  [Python の関数とメソッドの違いってなに? | Mastering Python](https://python.ms/method/#_3-%E8%A7%A6%E3%81%A3%E3%81%A6%E6%AF%94%E8%BC%83%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B%E3%80%82)

1

追記

2019/11/28 13:34

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -29,5 +29,5 @@
29
29
  [Python 言語リファレンス — Python 3.8.0 ドキュメント](https://docs.python.org/ja/3/reference/index.html)
30
30
 
31
31
  公式ではないですが、こちらのページも参考になります。わかりやすいので仕組みが気になるなら読んでください。
32
-
32
+ (と思って貼り付けたら、先にこのサイトの著者のnico25さんが回答されてしまった・・・)
33
33
  [Python の関数とメソッドの違いってなに? | Mastering Python](https://python.ms/method/#_3-%E8%A7%A6%E3%81%A3%E3%81%A6%E6%AF%94%E8%BC%83%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B%E3%80%82)