Gewöhn dir mal sofort ab, __ und getter zu benutzen. Das ist NICHT wofür du denkst das es ist, produziert den Fehler den du bekommst, und getter sind unnötiger Boilerplate, den man in Python nicht schreibt. Wenn ein Attribut zur öffentlichen Schnittstelle gehört, dann hat das einfach keinen unterstrich, geschweige denn zwei.
Für deinen count Mechanismus gibt es collections.Counter, oder collections.defaultdict.
Und bitte beachte PEP8 für Benamungen.
Code: Alles auswählen
from collections import Counter
class Foo:
der __init__(self):
self.products = []
self.matches_count = Counter()
def add_product(self, value):
self.products.append(value)
def add_match(self, key):
self.matches_count[key] += 1
Ich finde auch die zwei Funktionalitäten in einer Klasse etwas fragwürdig. SOLID und so.
Mit dem Template hat das aber alles nicht viel zu tun. Wenn du iterieren willst über dir Produkte,musst du natürlich objekt.attribut schreiben.