回答編集履歴
4
説明補足
test
CHANGED
@@ -40,7 +40,7 @@
|
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
-
一方で、メンバー変数にインスタンスを保持する
|
43
|
+
一方で、メンバー変数にインスタンスを保持して、外部から操作する場合は、「委譲」と言います
|
44
44
|
|
45
45
|
|
46
46
|
|
3
説明補足
test
CHANGED
@@ -4,15 +4,59 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
+
設計に関しては、何を目的とするかによって最善策は変わってくるので
|
7
8
|
|
9
|
+
一概にどうすればよいとは言えない部分はあります。一言でいうと case-by-case
|
8
10
|
|
9
|
-
|
11
|
+
こういった場合はこうした方が良い、というように、目的とする部分・前提条件の共有が必要です。
|
10
12
|
|
11
13
|
|
12
14
|
|
13
|
-
|
15
|
+
一般的な事を言うと、それぞれに長所・短所はあります。
|
14
16
|
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
`class Application(tk.Frame):` の様な書き方の場合、「継承」と言い
|
22
|
+
|
23
|
+
「継承」の一番の問題点は、親クラスと不要な名前空間の共有が発生してしまう点でしょうか。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
self.xxx で Frame クラスの属性にアクセスできるので、
|
28
|
+
|
29
|
+
自分で新しくメソッドやプロパティを追加したい場合、
|
30
|
+
|
31
|
+
親クラスと被らないかどうかを確認する必要があります。
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
サンプルコード等の短い例では、それ程デメリットにならない為、
|
36
|
+
|
37
|
+
単に記述量が少なく成るからという理由で使われることは多いです。
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
|
15
|
-
|
43
|
+
一方で、メンバー変数にインスタンスを保持する関係は、「委譲」と言います
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
- Application のロジックを Tkinter から切り離したい場合は、
|
48
|
+
|
49
|
+
こちらの方が好ましい。 -> Tkinter に依存せずコードのテストが可能になる
|
50
|
+
|
51
|
+
- 再利用を気にしなくても良い場合は、若干冗長になる。(書き捨てのコード等)
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
他にも色々あるので、
|
56
|
+
|
57
|
+
詳しくは、「移譲」や「継承」とその使い分けに関して調べて見て下さい。
|
58
|
+
|
59
|
+
|
16
60
|
|
17
61
|
|
18
62
|
|
2
誤字修正
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
- `class Class(tk.Frame):` というやつ は「継承」と言い
|
14
14
|
|
15
|
-
- リンク先の、`classのメンバー変数にインスタンスを保持`する事を「
|
15
|
+
- リンク先の、`classのメンバー変数にインスタンスを保持`する事を「委譲」と言います
|
16
16
|
|
17
17
|
|
18
18
|
|
1
誤字修正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
詳しくは、「
|
9
|
+
詳しくは、「委譲」や「継承」と、その使い分けについて調べてみると良いです。
|
10
10
|
|
11
11
|
|
12
12
|
|