回答編集履歴
2
訂正 functools.partial だとこの例ではうまくいったので、 lambda へ変更
test
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
Productクラスの再利用性が犠牲になります。
|
8
8
|
|
9
9
|
実質 Base クラス内でしかインスタンスを生成できなくなり、
|
10
|
-
functools.partial での利用ができなくなったり、
|
10
|
+
~~functools.partial~~ lambda での利用ができなくなったり、
|
11
11
|
単体テストを作成するのにひと手間必要になり、利便性が損なわれます。
|
12
12
|
|
13
13
|
```python
|
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
|
32
32
|
# 明示的に渡すことで、Base 外でも base を与えれば Product のインスタンスを作れるようになります。
|
33
|
-
# => 単体テストや
|
33
|
+
# => 単体テストや lambda での利用に配慮
|
34
34
|
```
|
35
35
|
|
36
36
|
Base 側でカウントする場合は、
|
@@ -87,6 +87,10 @@
|
|
87
87
|
print(obj)
|
88
88
|
print(base.count) # 2
|
89
89
|
|
90
|
+
create12 = lambda: base.createProduct(12)
|
91
|
+
obj2 = create12()
|
92
|
+
print(base.count) # 3
|
93
|
+
|
90
94
|
```
|
91
95
|
|
92
96
|
|
1
コードのミス修正
test
CHANGED
@@ -53,7 +53,7 @@
|
|
53
53
|
def createProduct(self, *args, **kw):
|
54
54
|
obj = Product(*args, **kw)
|
55
55
|
self._counter.add(obj)
|
56
|
-
self._total +=
|
56
|
+
self._total += 1
|
57
57
|
return obj
|
58
58
|
|
59
59
|
@property
|