Closed Morg42 closed 9 months ago
So, aufgrund der Thematik sich überschneidender Methoden und Item-Namen gibt es jetzt ein "Unterobjekt" item.list
bzw. item.dict
. Das kann wie das Item aufgerufen werden item.list() === item()
.
Die oben beschriebenen Methoden (list.append, dict.update usw) sind jetzt "unterhalb" der Unterobjekte, also item.list.append(...)
bzw item.dict.update(...)
. Damit kollidieren die Methoden nicht mehr - es sei denn, es existieren Unteritems mit den Namen "list" oder "dict".
Ich habe als Vorschlag und zur Diskussion mal meine Idee zum Handling von dicts und lists in Items ergänzt.
Martins Implementation ist unverändert, allerdings legt das Item je nach Typ die folgenden Item-Funktionen an:
list: append, prepend, insert, pop, extend, clear, delete, remove dict: get, delete, clear, pop, popitem, update
delete statt del, weil del als reserviertes Wort nicht nutzbar ist.
Die Funktionen lassen sich quasi 1:1 wie die originalen list-/dict-Funktionen nutzen, z.B.
Zusätzlich können allen Funktionen die Parameter
caller
,source
,dest
mitgegeben werden.Intern rufen die Funktionen alle
__call__
auf, so dass alle notwendigen Item-Mechaniken durchlaufen werden.Ich sehe das Problem, dass für
remove
,pop
usw. noch weitere zusätzliche Parameter an__call__
übergeben werden müssen und die Auswertung, welche Parameter und welche nicht übergeben wurden, schnell sehr unübersichtlich und komplex wird.Das soll keine Kritik an Martins Implementation sein und kein Ersatz, sondern eine Ergänzung (append, prepend, get rufen sogar mit "seiner" neuen Syntax
__call__
auf...).Ob wir das annehmen wollen oder nicht, wäre ggf. zu diskutieren.
Die Methoden sind alle einzeln getestet. Automatische Tests kann ich leider nicht ohne Weiteres einbauen, weil die Initialisierung der Item-Klasse nicht "normal" durchlaufen wird.