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

回答編集履歴

3

追記

2018/04/24 14:37

投稿

hayataka2049
hayataka2049

スコア30939

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

2

追記

2018/04/24 14:37

投稿

hayataka2049
hayataka2049

スコア30939

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

1

hoge

2018/04/24 12:59

投稿

hayataka2049
hayataka2049

スコア30939

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