回答編集履歴
5
d
answer
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
## callable かどうかの判定
|
4
4
|
|
5
|
-
Python に置ける callable かどうか
|
5
|
+
Python に置ける callable かどうかは `__call__` が定義されているかどうかではなく、厳密にはオブジェクトの tp_call ポインタが NULL かどうかで見ている。
|
6
|
-
なので、`__call__`
|
6
|
+
なので、`__call__` を定義していなくても、tp_call が NULL でなかったら、callable である。
|
7
7
|
|
8
8
|
```c
|
9
9
|
int PyCallable_Check(PyObject *x)
|
4
b
answer
CHANGED
@@ -74,5 +74,5 @@
|
|
74
74
|
|
75
75
|
```
|
76
76
|
a = int()
|
77
|
-
print(a) #
|
77
|
+
print(a) # 0
|
78
78
|
```
|
3
d
answer
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
この関数の中身を見てみると、
|
32
32
|
|
33
|
-
```
|
33
|
+
```line6198
|
34
34
|
static PyObject *
|
35
35
|
type_call(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
36
36
|
{
|
@@ -58,7 +58,7 @@
|
|
58
58
|
|
59
59
|
> 実行してみた感じだとそのオブジェクトの初期値?的なものが出力されているように感じます。
|
60
60
|
|
61
|
-
```
|
61
|
+
```
|
62
62
|
class Hoge:
|
63
63
|
pass
|
64
64
|
|
2
d
answer
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
自分も type() の返す type オブジェクトに対して、呼び出しメソッドを使ったことがないので、知らなかったのですが、流れを追ってみたら以下のようです。
|
1
|
+
自分も `type()` の返す `type` オブジェクトに対して、呼び出しメソッドを使ったことがないので、知らなかったのですが、流れを追ってみたら以下のようです。
|
2
2
|
|
3
3
|
## callable かどうかの判定
|
4
4
|
|
5
|
-
Python に置ける callable かどうかの定義は __call__ があるかどうかではなく、厳密にはオブジェクトの tp_call ポインタが NULL かどうかで見ている。
|
5
|
+
Python に置ける callable かどうかの定義は `__call__` があるかどうかではなく、厳密にはオブジェクトの tp_call ポインタが NULL かどうかで見ている。
|
6
|
-
なので、__call__ で設定していなくても、tp_call が NULL でなかったら、callable である。
|
6
|
+
なので、`__call__` で設定していなくても、tp_call が NULL でなかったら、callable である。
|
7
7
|
|
8
8
|
```c
|
9
9
|
int PyCallable_Check(PyObject *x)
|
1
d
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
## callable かどうかの判定
|
4
4
|
|
5
|
-
厳密にはオブジェクトの tp_call ポインタが NULL かどうかで見ている。
|
5
|
+
Python に置ける callable かどうかの定義は __call__ があるかどうかではなく、厳密にはオブジェクトの tp_call ポインタが NULL かどうかで見ている。
|
6
6
|
なので、__call__ で設定していなくても、tp_call が NULL でなかったら、callable である。
|
7
7
|
|
8
8
|
```c
|