Ich möchte meine Klasse JSON serializeable und versuchen, es mit der JSONEncoder
Klasse zu erweitern. Warum nimmt die default
Funktion jedoch den o
Parameter, wenn es eine Methode meiner Klasse sein soll.Python JSON Encoder - Standardmethode
Ich möchte mein Klassenobjekt serialisieren, nicht ein drittes Objekt, das an die Methode übergeben wird?
Implementieren Sie diese Methode in einer Unterklasse, sodass sie ein serialisierbares Objekt für o zurückgibt oder die Basisimplementierung aufruft (um einen TypeError auszulösen).
def default(self, o):
try:
iterable = iter(o)
except TypeError:
pass
else:
return list(iterable)
# Let the base class default method raise the TypeError
return JSONEncoder.default(self, o)
Sie erweitern Ihre Klasse nicht mit JSONEncoder, Sie erweitern JSONEncoder, um Ihre Klasse zu behandeln. – glibdud
Die Klasse, die serialisierbar sein soll *, soll nicht von 'JSONEncoder' übernommen werden ... das ist dein grundlegendes Missverständnis. –