回答編集履歴
5
追記
test
CHANGED
@@ -128,6 +128,8 @@
|
|
128
128
|
|
129
129
|
## https://stackoverflow.com/questions/25577578/access-class-variable-from-instance
|
130
130
|
|
131
|
+
## 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
|
132
|
+
|
131
133
|
def method2(self):
|
132
134
|
|
133
135
|
""" 予想:インスタンスメソッド(クラスとインスタンス両方参照?) """
|
4
追記に関して
test
CHANGED
@@ -73,3 +73,103 @@
|
|
73
73
|
あとここも見ておくべきです。
|
74
74
|
|
75
75
|
[なぜメソッドの定義や呼び出しにおいて '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)
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
###### 追記に関して
|
80
|
+
|
81
|
+
```python
|
82
|
+
|
83
|
+
## 私が付けたコメントはこのように二重の#で示すことにします
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
class TestCommon:
|
88
|
+
|
89
|
+
## このtestは他の言語で言うところのクラス変数であり、
|
90
|
+
|
91
|
+
## インスタンス変数は同様には作れません
|
92
|
+
|
93
|
+
## (__init__でselfの属性に対して代入して作ったりするが、それは特別な操作ではない
|
94
|
+
|
95
|
+
## (__init__以外の場所でもできる))
|
96
|
+
|
97
|
+
test = "てすと"
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
## これは実際こんな感じ
|
102
|
+
|
103
|
+
@classmethod
|
104
|
+
|
105
|
+
def method1(cls):
|
106
|
+
|
107
|
+
""" 予想:クラスメソッド (クラスのみの参照?) """
|
108
|
+
|
109
|
+
# メンバ変数を参照=クラスだけ参照?
|
110
|
+
|
111
|
+
print(cls.test)
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
## TestCommon.testはいかにも駄目な感じがします
|
118
|
+
|
119
|
+
## 参照だけならself.testでも同じ結果が得られます。ただしこれに代入すると、
|
120
|
+
|
121
|
+
## self.test(インスタンス変数)がクラス変数とは別に作られてしまいます
|
122
|
+
|
123
|
+
## インスタンスメソッドからクラス変数に代入する場合のやり方は悩ましい問題です
|
124
|
+
|
125
|
+
## (これ!という答えは見たことないかも。self.__class__.testかtype(self).testの二択になり、後者のほうがどちらかというと良いということになりそうですが)
|
126
|
+
|
127
|
+
## https://qiita.com/FGtatsuro/items/be22c520e62a1d100e09
|
128
|
+
|
129
|
+
## https://stackoverflow.com/questions/25577578/access-class-variable-from-instance
|
130
|
+
|
131
|
+
def method2(self):
|
132
|
+
|
133
|
+
""" 予想:インスタンスメソッド(クラスとインスタンス両方参照?) """
|
134
|
+
|
135
|
+
# selfを使わずにクラス名.メンバ変数で呼び出し?
|
136
|
+
|
137
|
+
print(TestCommon.test)
|
138
|
+
|
139
|
+
# インスタンスを参照?
|
140
|
+
|
141
|
+
print(self.request.POST)
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
## これは実際こう
|
148
|
+
|
149
|
+
def method3(self):
|
150
|
+
|
151
|
+
""" 予想:インスタンスメソッド(クラス参照なし?) """
|
152
|
+
|
153
|
+
print(self.request.POST)
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
## selfやclsに類するものを取らないだけで、引数自体は何ら問題なく受けとれます
|
160
|
+
|
161
|
+
## インスタンスメソッドのときの第二引数以降は問題なく与えられるということです
|
162
|
+
|
163
|
+
## 私の書き方が悪かったかも
|
164
|
+
|
165
|
+
@staticmethod
|
166
|
+
|
167
|
+
def method4(data):
|
168
|
+
|
169
|
+
""" 予想:スタティックメソッドにすると引数エラー? """
|
170
|
+
|
171
|
+
# 引数取らない=受け取れない???
|
172
|
+
|
173
|
+
return data
|
174
|
+
|
175
|
+
```
|
3
追記
test
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
Python3系を前提に回答します。2以前は仕様が違います。
|
2
|
+
|
3
|
+
|
4
|
+
|
1
5
|
###### 直接の回答
|
2
6
|
|
3
7
|
- インスタンスメソッド
|
@@ -63,3 +67,9 @@
|
|
63
67
|
(と思って貼り付けたら、先にこのサイトの著者の[nico25さん](https://teratail.com/users/nico25)が[回答されてしまった・・・](https://teratail.com/questions/226164#reply-330699))
|
64
68
|
|
65
69
|
[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)
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
あとここも見ておくべきです。
|
74
|
+
|
75
|
+
[なぜメソッドの定義や呼び出しにおいて '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
追記
test
CHANGED
@@ -60,6 +60,6 @@
|
|
60
60
|
|
61
61
|
公式ではないですが、こちらのページも参考になります。わかりやすいので仕組みが気になるなら読んでください。
|
62
62
|
|
63
|
-
(と思って貼り付けたら、先にこのサイトの著者のnico25さんが回答されてしまった・・・)
|
63
|
+
(と思って貼り付けたら、先にこのサイトの著者の[nico25さん](https://teratail.com/users/nico25)が[回答されてしまった・・・](https://teratail.com/questions/226164#reply-330699))
|
64
64
|
|
65
65
|
[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
追記
test
CHANGED
@@ -60,6 +60,6 @@
|
|
60
60
|
|
61
61
|
公式ではないですが、こちらのページも参考になります。わかりやすいので仕組みが気になるなら読んでください。
|
62
62
|
|
63
|
-
|
63
|
+
(と思って貼り付けたら、先にこのサイトの著者のnico25さんが回答されてしまった・・・)
|
64
64
|
|
65
65
|
[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)
|