回答編集履歴
2
更に追記
answer
CHANGED
@@ -36,4 +36,15 @@
|
|
36
36
|
2. どっちもほしいときとか、どっちでも良いときは割と両方作ってあったりする(list.sort()とsorted()の違いを考えてみましょう)
|
37
37
|
3. 破壊的な操作をして更に結果を返すという関数/メソッドはほとんど見かけたことがない。あると便利だけど、それ以上に事故の元になるという発想だと思います。
|
38
38
|
|
39
|
-
これはPEPなどで明文化されてるのだろうか・・・。
|
39
|
+
これはPEPなどで明文化されてるのだろうか・・・。
|
40
|
+
|
41
|
+
### 更に余談
|
42
|
+
> なぜ、len関数は括弧内に変数に入れて、meanは変数の後にメソッドで指定するのか、
|
43
|
+
> その背後にある考え方について教えていただけないでしょうか?
|
44
|
+
|
45
|
+
上の私の回答はこれへの直接の回答になってないかもなので、追記。
|
46
|
+
len()の方は古(いにしえ)からある関数であります。オブジェクト指向原理主義者の人には「なんでメソッドにしないのよ」とよく言われるのですが(でも最近は見かけない気がする。古い記事でそういうのはたくさんある)、こういう理由でメソッドになっていないらしいです。
|
47
|
+
|
48
|
+
[len が py3k でも 関数のままである理由 - methaneのブログ](https://methane.hatenablog.jp/entry/20090721/1248195293)
|
49
|
+
|
50
|
+
numpyのmeanメソッドは、numpy作った人たちの思想です、としか言いようがないです。
|
1
変更
answer
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
あまり考え方の違いとか、考えるだけ無駄な気がします・・・。
|
31
31
|
|
32
32
|
### 余談
|
33
|
-
まあでも、だいたい次のような法則があり、組み込みや標準ライブラリの関数は大半のものが従っています(すべてではないのが厄介なところ)。
|
33
|
+
まあでも、だいたい次のような法則があり、組み込みや標準ライブラリの関数・オブジェクトは大半のものが従っています(すべてではないのが厄介なところ)。
|
34
34
|
0. 破壊的な操作をする系のものは概ねメソッドにし、返り値はNone(list.sort()、list.reverse()などメソッドを呼んだ相手の中身が変わるもの)
|
35
35
|
1. 非破壊的な操作は関数で、結果を返り値として返す(len()のようにオリジナルの中身に影響を及ぼさないものや、sorted()やreversed()など、オリジナルを変えないで新しい結果を作るもの・・・って今確認したらreversedはクラスだったよ! なんてこった! そういうこともありますね)
|
36
36
|
2. どっちもほしいときとか、どっちでも良いときは割と両方作ってあったりする(list.sort()とsorted()の違いを考えてみましょう)
|