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

回答編集履歴

4

修正

2021/04/08 10:24

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  みたいなことだった訳で、つまり「動的に適切な型チェックをする」という方向性だったと考えられます。
24
24
 
25
- 我々のように「普通に」Pythonを道具として使うというスタンスでコードを書いているとあまり意識しませんが、高名なライブラリのコードを読むと、外から受け取ったものはだいたい`isinstance`の嵐をくぐって、型によってぜんぜん違う処理に分岐したりもし、最終的にこれは想定されていない型だな……となった例外送出して止める、みたいに書いてあります。なので、こういう機能は、要るときは要ります。
25
+ 我々のように「普通に」Pythonを道具として使うというスタンスでコードを書いているとあまり意識しませんが、高名なライブラリのコードを読むと、外から受け取ったものはだいたい`isinstance`の嵐をくぐって、型によってぜんぜん違う処理に分岐したりもし、万が一(?)これは想定されていない型だな……となったときには例外送出して止める、みたいに書いてあります。なので、こういう機能は、要るときは要ります。
26
26
 
27
27
  ---
28
28
 

3

追記

2021/04/08 10:24

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -22,6 +22,8 @@
22
22
 
23
23
  みたいなことだった訳で、つまり「動的に適切な型チェックをする」という方向性だったと考えられます。
24
24
 
25
+ 我々のように「普通に」Pythonを道具として使うというスタンスでコードを書いているとあまり意識しませんが、高名なライブラリのコードを読むと、外から受け取ったものはだいたい`isinstance`の嵐をくぐって、型によってぜんぜん違う処理に分岐したりもし、最終的にこれは想定されていない型だな……となったら例外送出して止める、みたいに書いてあります。なので、こういう機能は、要るときは要ります。
26
+
25
27
  ---
26
28
 
27
29
  > 型ヒントやmypy等を併用する場合は意味があるかと思うのですが、それらと組み合わせて使用することを前提としている機能なのでしょうか?

2

追記

2021/04/08 10:23

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -31,4 +31,12 @@
31
31
  ---
32
32
 
33
33
  「アヒルのように見えて、アヒルのように鳴けば、それはアヒルである。」
34
- 「鳴き声を聴き比べるコードは共通化した方が良いのではないか。」
34
+ 「鳴き声を聴き比べるコードは共通化した方が良いのではないか。」
35
+
36
+ ---
37
+
38
+ うがった見方をした場合……
39
+
40
+ Pythonは歴史的にはDuck Typingバンザイな文化であったのは確かであり、この場合、たとえばライブラリ製作者の立場で考えると「ユーザが独自定義したいい加減なクラスのオブジェクトが投げつけられてしまう」、逆にライブラリユーザの立場から考えると「どの程度まで独自定義クラスを作り込めばこのライブラリに投げれるのかわからん」という苦悩がそれぞれに発生します。
41
+
42
+ その辺を統制する仕組みがあると、基本的にはみんな助かったと考えられます。ライブラリ製作者はABCを書けばいいし、ユーザはABCに従って実装すれば良いのですから。

1

追記

2021/04/08 10:12

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -20,10 +20,15 @@
20
20
  組み込み型であれば最悪列挙できるかもしれないが……てこと
21
21
  - だから`isinstance(x, Sequence)`とか書けるとものすごく便利なのではないか
22
22
 
23
- みたいなことだった訳で、つまり「動的に適切な型チェックをする」という方向性だったと考えられます。むしろ、Duck Typingをある意味突き詰めようとした結果としてABCが必要になったと考えるべきでしょう。
23
+ みたいなことだった訳で、つまり「動的に適切な型チェックをする」という方向性だったと考えられます。
24
24
 
25
25
  ---
26
26
 
27
27
  > 型ヒントやmypy等を併用する場合は意味があるかと思うのですが、それらと組み合わせて使用することを前提としている機能なのでしょうか?
28
28
 
29
- に関しては、`abc`自体は[バージョン 2.6](http://doc.pv.land.to/library/abc.html)から追加されてしまっており、型ヒントの機能が追加されるのにはるかに先行している、という事実を書き添えておきます。
29
+ に関しては、`abc`自体は[バージョン 2.6](http://doc.pv.land.to/library/abc.html)から追加されてしまっており、型ヒントの機能が追加されるのにはるかに先行している、という事実を書き添えておきます。
30
+
31
+ ---
32
+
33
+ 「アヒルのように見えて、アヒルのように鳴けば、それはアヒルである。」
34
+ 「鳴き声を聴き比べるコードは共通化した方が良いのではないか。」