Commit dd246171 authored by R David Murray's avatar R David Murray

#16057: Clarify why the base method default is called in custom encoders.

Original patch by Kushal Das.
parent f3460414
...@@ -83,6 +83,7 @@ Extending :class:`JSONEncoder`:: ...@@ -83,6 +83,7 @@ Extending :class:`JSONEncoder`::
... def default(self, obj): ... def default(self, obj):
... if isinstance(obj, complex): ... if isinstance(obj, complex):
... return [obj.real, obj.imag] ... return [obj.real, obj.imag]
... # Let the base class default method raise the TypeError
... return json.JSONEncoder.default(self, obj) ... return json.JSONEncoder.default(self, obj)
... ...
>>> json.dumps(2 + 1j, cls=ComplexEncoder) >>> json.dumps(2 + 1j, cls=ComplexEncoder)
...@@ -431,6 +432,7 @@ Encoders and Decoders ...@@ -431,6 +432,7 @@ Encoders and Decoders
pass pass
else: else:
return list(iterable) return list(iterable)
# Let the base class default method raise the TypeError
return json.JSONEncoder.default(self, o) return json.JSONEncoder.default(self, o)
......
...@@ -166,6 +166,7 @@ class JSONEncoder(object): ...@@ -166,6 +166,7 @@ class JSONEncoder(object):
pass pass
else: else:
return list(iterable) return list(iterable)
# Let the base class default method raise the TypeError
return JSONEncoder.default(self, o) return JSONEncoder.default(self, o)
""" """
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment