回答編集履歴

1

コード追記

2022/09/29 13:29

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,2 +1,57 @@
1
1
  クラスではなくインスタンスを自動生成するのではありませんか?
2
2
  name毎にまとめてインスタンス生成すればいいと思います。
3
+
4
+ ```py
5
+ class Tokuten_data:
6
+ def __init__(self, name):
7
+ self.name = name
8
+ self.gokei = 0
9
+
10
+ def gokei_cal(self, ten):
11
+ self.gokei = self.gokei + ten
12
+ print(f"{self.name}: {self.gokei}")
13
+ return(self.gokei)
14
+
15
+ def __repr__(self):
16
+ return f"<Tokuten_data: name={repr(self.name)}, gokei={self.gokei}>"
17
+
18
+ # -----------------------------------------------
19
+ # 動的にクラスを生成して加算
20
+ # -----------------------------------------------
21
+ data = [
22
+ {
23
+ "name": "taro",
24
+ "ten": 50
25
+ },
26
+ {
27
+ "name": "hanako",
28
+ "ten": 90
29
+ },
30
+ {
31
+ "name": "taro",
32
+ "ten": 45
33
+ },
34
+ {
35
+ "name": "hanako",
36
+ "ten": 85
37
+ }
38
+ ]
39
+
40
+ people = {}
41
+ for person in data:
42
+ name, ten = person["name"], person["ten"]
43
+ if name not in people:
44
+ people[name] = Tokuten_data(name)
45
+ people[name].gokei_cal(ten)
46
+ print(people)
47
+ ```
48
+
49
+ ```text:実行結果
50
+ taro: 50
51
+ hanako: 90
52
+ taro: 95
53
+ hanako: 175
54
+ {'taro': <Tokuten_data: name='taro', gokei=95>, 'hanako': <Tokuten_data: name='hanako', gokei=175>}
55
+ ```
56
+
57
+