以前した質問と似通っているのですが,ご回答いただけると幸いです.
様々なデータを保持している2つのクラスをある関数に渡して,その中でお互いのデータを用いて計算を行う,というのが今やりたいことです.
簡単に例示したのが以下のコードです.
Python
1# date.py 2class Date_1: 3 # メソッドやら変数やら 4 # 主にデータの保持 5 def __init__(self): 6 self.a = 0 7 self.b = 1 8 9class Date_2: 10 # 上に同じようにデータを保持 11 def __init__(self): 12 self.a = 0 13 self.b = 1
Python
1# main.py 2import date 3 4def calc(date_1, date_2): 5 # Date_1とDate_2のメンバ変数を用いて計算を行う. 6 # 以下の例は適当です. 7 a = date_1.a * date_2.a 8 b = date_1.a * date_2.b 9 c = a + b 10 return c 11 12 13if __name__ == "__main__": 14 date_1 = date.Date_1() 15 date_2 = date.Date_2() 16 17 """ date_1とdata_2に格納するデータを取得する処理 """ 18 19 result = calc(date_1, date_2) 20
このようにインスタンスごとメソッドに渡して処理するというのはよく行われるものなのでしょうか.
何らかの都合でDate_1
クラスのメンバ変数self.a
をself.aaa
に変更しようとすると,calc()
も書き換える必要がありますし,個人的にはそこを分離したいと考えています.
必要な変数だけを渡すようにすればcalc()
とクラスの分離ができるかとおもいましたが,引数が多くなってしまうので,それならばインスタンスごと渡したほうが分かりやすいと思って上記のようにしています.
あとこれを気にするのは変なのかもしれませんが,上記のようにすると,calc()
の内容を記述する際にDate_1やDate_2の変数やメソッドに対してコード補完が働かないので少々やりづらいなと感じています.(この程度のコードであればいいのですが,実際にはDate
クラスは複数の変数を保持しています.)
calc()
内部でインスタンス化すれば解消はするのですが,date_1
やdate_2
はcalc()
以外でも利用したいので外でインスタンス化するしかないかなと考えています.
こういう状況ではどうすべきなのか,ご教授お願いいたします.
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/09 08:25
2019/09/09 09:49
2019/09/09 16:47