回答編集履歴

3

追記

2018/04/24 14:37

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -1,6 +1,60 @@
1
1
  この場合は明示的にインスタンス化していますから、そもそも例外クラスが渡されている訳ではありません。
2
2
 
3
- 同じ表示になるのは、継承元のExceptionクラスの_str_がnameを見ているから・・・だと思います(ちゃんと確認していないので、憶測で書いてる)。
3
+ ~~同じ表示になるのは、継承元のExceptionクラスの_str_がnameを見ているから・・・だと思います(ちゃんと確認していないので、憶測で書いてる)。
4
+
5
+ ~~
6
+
7
+ argsを見ていると指摘していただきました。
8
+
9
+ [5. 組み込み例外 — Python 3.6.5 ドキュメント](https://docs.python.jp/3/library/exceptions.html#base-classes)
10
+
11
+ 実行例を色々確認
12
+
13
+ ```python
14
+
15
+ >>> class neko(Exception):
16
+
17
+ ... def __init__(self, hoge, fuga):
18
+
19
+ ... pass
20
+
21
+ ...
22
+
23
+ >>> f = neko("HOGE", "FUGA")
24
+
25
+ >>> print(f)
26
+
27
+ ('HOGE', 'FUGA') # 引数のタプル
28
+
29
+ >>> class neko2(Exception):
30
+
31
+ ... def __init__(self):
32
+
33
+ ... pass
34
+
35
+ ...
36
+
37
+ >>> f = neko2()
38
+
39
+ >>> print(f)
40
+
41
+ # 空文字列
42
+
43
+ >>> class neko3(Exception):
44
+
45
+ ... def __init__(self, hoge):
46
+
47
+ ... pass
48
+
49
+ ...
50
+
51
+ >>> f = neko3("HOGE")
52
+
53
+ >>> print(f)
54
+
55
+ HOGE # ("HOGE", )じゃないのか・・・
56
+
57
+ ```
4
58
 
5
59
 
6
60
 

2

追記

2018/04/24 14:37

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -1,3 +1,23 @@
1
1
  この場合は明示的にインスタンス化していますから、そもそも例外クラスが渡されている訳ではありません。
2
2
 
3
3
  同じ表示になるのは、継承元のExceptionクラスの_str_がnameを見ているから・・・だと思います(ちゃんと確認していないので、憶測で書いてる)。
4
+
5
+
6
+
7
+ ### 追記
8
+
9
+ 例外クラスを渡すのはこっちで、
10
+
11
+ ```python
12
+
13
+ raise Exception
14
+
15
+ ```
16
+
17
+ インスタンス化して渡すとこうなります。
18
+
19
+ ```python
20
+
21
+ raise Exception()
22
+
23
+ ```

1

hoge

2018/04/24 12:59

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -1,3 +1,3 @@
1
1
  この場合は明示的にインスタンス化していますから、そもそも例外クラスが渡されている訳ではありません。
2
2
 
3
- 同じ表示になるのは、継承元のExceptionクラスの__str__がnameを見ているから・・・だと思います(ちゃんと確認していないので、憶測で書いてる)。
3
+ 同じ表示になるのは、継承元のExceptionクラスの_str_がnameを見ているから・・・だと思います(ちゃんと確認していないので、憶測で書いてる)。