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

回答編集履歴

1

追記

2019/05/31 23:40

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -59,4 +59,7 @@
59
59
  上で`a.m`の結果はbounded methodとなりメソッドのレシーバーが`a`の値であることをbounded methodオブジェクト自体が記憶しています。一方`A.m`と記述すると`A.m`の結果は単なる関数であり、mを定義したときの仮引数の通りに実引数を渡さないといけないことになります。
60
60
 
61
61
  `super(aClass, self).m`とすると解決されたメソッドmがbounded methodとして返され
62
- `super(aClass, selfClass).m`とすると解決されたメソッドは関数として返されます。要は例1と同じことと捉えることができるわけです。
62
+ `super(aClass, selfClass).m`とすると解決されたメソッドは関数として返されます。要は例1と同じことと捉えることができるわけです。
63
+
64
+ ---
65
+ 追記: 前述のsuperの大雑把な説明はインスタンスメソッド内においてのものです。classmethodでもそうあってほしいとおりに動作しますが、staticmethodではsuperの引数を省略できず`super(__class__, __class__)`などと書かねばなりません。