回答編集履歴

2

追記

2018/12/27 12:57

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -108,7 +108,7 @@
108
108
 
109
109
 
110
110
 
111
- このように関数は`function`クラスのインスタンスであり、`function`クラスのコンストラクタを適切に呼び出すことでインスタンス化できます。`def`で書けるのは糖衣構文に過ぎません。
111
+ このように関数は`function`クラスのインスタンスであり、実際に`function`クラスのコンストラクタを適切に呼び出すことでインスタンス化して生成できます。`def`で書けるのは糖衣構文に過ぎません。
112
112
 
113
113
 
114
114
 

1

追記

2018/12/27 12:57

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -1,4 +1,4 @@
1
- python的な「すべてがオブジェクト」は「すべてがインスタンス」であることを表します。クラス、関数、メソッドなどもインスタンスの一種に過ぎません。特別な仕掛けがあるのでクラス、関数、メソッドとして使えるだけで。
1
+ Python的な「すべてがオブジェクト」は「すべてがインスタンス」であることを表します。クラス、関数、メソッドなどもインスタンスの一種に過ぎません。特別な仕掛けがあるのでクラス、関数、メソッドとして使えるだけで。
2
2
 
3
3
 
4
4
 
@@ -310,7 +310,7 @@
310
310
 
311
311
 
312
312
 
313
- そしてすべてがインスタンスであるということから、pythonの変数はすべてJavaでいうところの参照型変数であること、どんなデータであってもGCが等しく同様にメモリ管理を行うことなどが帰結します。
313
+ そしてすべてがインスタンスであるということから、Pythonの変数はすべてJavaでいうところの参照型変数であること、どんなデータであってもGCが等しく同様にメモリ管理を行うことなどが帰結します。
314
314
 
315
315
 
316
316
 
@@ -322,12 +322,34 @@
322
322
 
323
323
 
324
324
 
325
- 「全てがオブジェクト**ではない**」言語についてですが、まずJavaでいう値型変数(`int`など)が挙げられます。あれはC言語の変数と同じような仕組みで、変数がメモリ領域を示す「箱」だと理解できます。関数の引数にすれば値渡しです。pythonはそうではありません。
325
+ 「全てがオブジェクト**ではない**」言語についてですが、まずJavaでいう値型変数(`int`など)が挙げられます。あれはC言語の変数と同じような仕組みで、変数がメモリ領域を示す「箱」だと理解できます。関数の引数にすれば値渡しです。Pythonはそうではありません。
326
-
327
-
328
-
326
+
327
+
328
+
329
- また、JavaやRubyでは、クラスやメソッドはpython的な「インスタンス」ではありません(ただし広い意味でのオブジェクトである場合はある)。
329
+ また、JavaやRubyでは、クラスやメソッドはPython的な「インスタンス」ではありません(ただし広い意味でのオブジェクトである場合はある)。
330
330
 
331
331
 
332
332
 
333
333
  値型はともかく、クラスやメソッドまで「インスタンス」とするのはクラスベースのオブジェクト指向言語としては異端です。どちらかといえば、プロトタイプベースのオブジェクト指向言語に糖衣構文をてんこ盛りにして、クラスベースっぽく使えるようにしたと解釈した方がわかりやすいかもしれません。なんのことはない、最近のJavaScriptみたいなものですね。
334
+
335
+
336
+
337
+ ---
338
+
339
+
340
+
341
+ > >「全てがアトリビュートとメソッドを持つことができる」
342
+
343
+
344
+
345
+ メソッドはアトリビュートの一種なので、アトリビュートだけあれば良い。
346
+
347
+
348
+
349
+ > 実は関数や変数の前のオブジェクト名が省略されている
350
+
351
+ > (例えばmainオブジェクトみたいなのがあって、main.関数()やmain.変数 が内部的な表記である)
352
+
353
+
354
+
355
+ Rubyはそれらしいですが、Pythonの場合は実行時の名前空間から変数名に対応するインスタンスを探してくるだけです。