回答編集履歴

1

説明のまずいぶぶんを修正

2019/06/21 16:12

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -4,7 +4,43 @@
4
4
 
5
5
 
6
6
 
7
- よくある普通のクラスは`type`のインスタンスです。`type`を継承したクラスのインスタンスがメタクラスす。
7
+ よくある普通のクラスは`type`のインスタンスです。`type`を継承するとメタクラスが作れます。`class B(metaclass=A):`ような記述は、`B`クラスそのものを`A`のインスタンスとして作りますよということを表します。
8
+
9
+ ```python
10
+
11
+ >>> class Hoge:
12
+
13
+ ... pass
14
+
15
+ ...
16
+
17
+ >>> class Fuga(type):
18
+
19
+ ... pass
20
+
21
+ ...
22
+
23
+ >>> class Piyo(metaclass=Fuga):
24
+
25
+ ... pass
26
+
27
+ ...
28
+
29
+ >>> type(Hoge)
30
+
31
+ <class 'type'>
32
+
33
+ >>> type(Fuga)
34
+
35
+ <class 'type'>
36
+
37
+ >>> type(Piyo)
38
+
39
+ <class '__main__.Fuga'>
40
+
41
+ ```
42
+
43
+ `Piyo`だけ型が違いますね。これがメタクラスの機能です。
8
44
 
9
45
 
10
46
 
@@ -152,7 +188,7 @@
152
188
 
153
189
 
154
190
 
155
- こういう操作を可能にする、ということなのです。どの段階で何を受け取るのかを注意してください。
191
+ こういう操作を可能にする(ここでは`B`の**定義時**に引数を受け取っている)、ということなのです。どの段階で何を受け取るのかを注意してください。
156
192
 
157
193
 
158
194