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

回答編集履歴

3

些細

2021/07/20 23:57

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  文法だけを単純に考えるなら、
2
2
 
3
- 普通のメソッドと違いメソッド名が省略できる
3
+ 普通のメソッドと違い呼び出し時のメソッド名が省略できる
4
4
 
5
5
  ことにしか違いがありません。
6
6
 

2

些細

2021/07/20 23:57

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -33,7 +33,7 @@
33
33
  > 素朴にインスタンス作成時にコンストラクタに引数を持たせるほうがシンプルかなと思うのですが、`__call__`を使う利点などありますでしょうか?
34
34
  > コンストラクタ: `__init__` では対応できないことなどありますでしょうか?
35
35
 
36
- 下の文をまに受けるなら、メソッドの利点はある? コンストラクタで対応できないことる? と聞いているのと同じなのですが、その自覚はあったでしょうか?
36
+ 下の文をまに受けるなら、メソッドの利点はある? コンストラクタで対応できないことがある? と聞いているのと同じなのですが、その自覚はあったでしょうか?
37
37
 
38
38
 
39
39
  ----

1

追記

2021/07/20 23:47

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -23,6 +23,12 @@
23
23
  ```
24
24
  `a.exec(...)`が`a(...)`と**短く書ける**だけです。
25
25
 
26
+
27
+ したがって機能的なメリットがあって採用するようなものではありません。
28
+ どちらかというと「メソッドの名前をどう付けるといいのか?」「このクラスの役割は何か?」というような問題意識の文脈で語られるべきものかと思います。
29
+ そのクラスを使ってコードを書いてみた時に、メソッド名が付いていることが冗長な場合(例えば上のように`exec`みたいなふんわりした名前にせざるをえないとか)に使えばいいものです。
30
+
31
+
26
32
  ----
27
33
  > 素朴にインスタンス作成時にコンストラクタに引数を持たせるほうがシンプルかなと思うのですが、`__call__`を使う利点などありますでしょうか?
28
34
  > コンストラクタ: `__init__` では対応できないことなどありますでしょうか?