通過名為__call__的特殊方法绢片,可以使類的實例能夠像普通的Python函數(shù)那樣得到調(diào)用。
current = {'green':12,'blue':3}
increments = [
('red',5),
('blue',17),
('orange',9),
]
class BetterCountMissing():
? ? ? ? def __init__(self):
? ? ? ? ? ? ? ? self.added = 0
? ? ? ? def __call__(self):
? ? ? ? ? ? ? ? self.added += 1
? ? ? ? ? ? ? ? return 0
counter = BetterCountMissing()
result = defaultdict(counter, current)
for key, amount in increments:
? ? ? ? result[key] += amount
assert counter.added == 2