> So far, the only situation I can find where method names necessarily > overlap is for the basics like __init__(), close(), flush(), and > save() where multiple parents need to have their own initialization > and finalization.
One other possibility is subclasses of the JSONEncoder class. For example the writer of class X provides a class, XJSONEncoder, which is able to serialize X instances (by extending the default method). Similarly there is a YJSONEncoder class, which can serialize Y instances. Those classes implement the default method like this: def default(self, o): if isinstance(o, X): ... # serialize the X instance else: return super().default(o) # let the next in the MRO try to handle it If YJSONEncoder encodes Y instances similarly, one can create an encoder class, which can encode both X and Y instances: class XYJSONEncoder(XJSONEncoder, YJSONEncoder): pass It is usable this way: json.dumps([X(), Y()], cls=XYJSONEncoder) Regards, Daniel -- http://mail.python.org/mailman/listinfo/python-list