回答編集履歴

2

ちょっと修正

2023/08/23 09:13

投稿

TakaiY
TakaiY

スコア14400

test CHANGED
@@ -65,7 +65,7 @@
65
65
  for ina226 in ina226_list:
66
66
  res = ina226.get_result()
67
67
  ina226.print_result(ina226,*res)
68
- ```
68
+ ```
69
69
 
70
70
  ひっかかったのは最後の関数です。
71
71
  まず、メソッドに自分自身を渡す必要はないでしょう。 必要であれば、第一引数(self)に入っています。

1

別質問でのやりとりから出た情報を追記しました。

2023/08/23 08:13

投稿

TakaiY
TakaiY

スコア14400

test CHANGED
@@ -38,4 +38,41 @@
38
38
  res = ina.get_result()
39
39
  result_list.append(res)
40
40
  ```
41
+ ---
42
+ 別質問のコメントからの追記
41
43
 
44
+ 載っていたコードに気になるところがあったので、合せて僕なりの修正をしてみました。
45
+ これが正しいということではありません。 いちおうなぜそうしたのかをコメントに入れました。
46
+ ```python
47
+ for conf in conf_list:
48
+ new_ina = Ina226(**conf)
49
+ # Ina226.init()の仮引数名とconf_listの辞書のkey名が一致していれば上のように書けます。
50
+ # ループ引数はconfの方がわかりやすいかと。
51
+ ina226_list.append(new_ina)
52
+
53
+ for ina226 in ina226_list:
54
+ ina226.init_ina226()
55
+ # インデックス番号を使わないのであれば、こちらがわかりやすいでしょう。
56
+ # もし使うということだとしても、enumarateを使ったほうがわかりやすいと思います。
57
+ # こちらもループ引数を変えました。
58
+ # また、init_ina226()関数も、Ina226クラスの中にあるので、単にinit、`__init__`と被りたくないのであれば、dev_initでいいと思います。
59
+ # その場合 こうなります。 ina225.dev_init()
60
+
61
+ #print( ina226_list[1].dev_addr)
62
+ print(len(ina226_list))
63
+
64
+ while True:
65
+ for ina226 in ina226_list:
66
+ res = ina226.get_result()
67
+ ina226.print_result(ina226,*res)
68
+ ```
69
+
70
+ ひっかかったのは最後の関数です。
71
+ まず、メソッドに自分自身を渡す必要はないでしょう。 必要であれば、第一引数(self)に入っています。
72
+ また、オブジェクトにそのオブジェクトのメソッド(get_result)で取得したデータを渡して出力(?)してもらうというのは、あまり見ない処理です。
73
+
74
+ - print_result()の引数を無くして、呼ばれたら、内部でget_result()と同様の処理をして取得したデータを表示する。必要であれば、取得した値を返す。
75
+ - get_result()のタイミングとは別のタイビングで取得結果を表示したいのであれば、スタティックメソッドにしたらいいのではないかと思います。
76
+
77
+ get_result()の後にprint_result()がある理由が明確であれば、それに対応した処理が書けるかなと思います。
78
+