回答編集履歴
1
コード追記
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
|
+
|