回答編集履歴

1

追記1

2022/02/20 13:56

投稿

BeatStar
BeatStar

スコア4958

test CHANGED
@@ -27,3 +27,32 @@
27
27
 
28
28
  これも上記のオブジェクトにすればいいはず。
29
29
 
30
+ ----
31
+
32
+ [追記1]
33
+
34
+ > この場合、新しいindividualClassを追加しようとすると、パラメータクラスも同時に追加することとなり、2つクラスを作らなければいけないのが少々気になっていました
35
+
36
+ A,Bが持つフィールドってまったく別物ですか? たとえば Aでは "攻撃力"と"守備力", Bでは "回復力"と"ダメージ力"とかみたいに。
37
+ まったく別物であればクラスごとに作ることになりますが、私の最初の所見では、A,Bともにほぼ同じフィールド(個別のものがいくつかあるぐらい)だと考えていたのですが。
38
+
39
+ ほぼ同じフィールドであればまとめるためのクラスは一個でいいです。
40
+
41
+ > ...commonMethodをそれらの中に定義することとなると、これは共通処理なので、クラス間で重複コードが生じることとならないでしょうか。
42
+
43
+ まあ、でしょうね。ただ、上で述べたように私の解釈ではA,Bは同じフィールドを持っているっていうことなので。(もちろん中身自体は別物だけど)
44
+
45
+ インターフェースみたいなものを用意してこれを実装して引数をまとめたやつを定義する。
46
+
47
+ 単純に 上でいう ArgumentExは commonInitメソッドみたいな共通の初期化をするようなメソッドを持ち、そのメソッドをA,Bがそれぞれ動かす。
48
+
49
+ ```
50
+ def __init__(self, argumentEx): // <- これと
51
+ # ClassB 固有のパラメータ
52
+ argumentEx_ = argumentEx // <- これと
53
+ ```
54
+
55
+ に関しては、単純に argumentExっていう引数としてのオブジェクトを受け取って フィールドとしての argumentEx_ にセットしているだけです。
56
+ 別にget/set系でやってもいいですが。
57
+
58
+ 単純に「クラスにまとめればいいじゃね?」ってことが言いたかっただけです。