<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def load_plugin_classes(classes, category=None, overwrite=False):
 """ load plugins from class objects Parameters classes: list list of classes category : None or str if str, apply for single plugin category overwrite : bool if True, allow existing plugins to be overwritten Examples -------- {'decoders': {}, 'encoders': {}, 'parsers': {}} {'decoders': {'example': 'a decoder for dicts containing _example_ key'}, 'encoders': {}, 'parsers': {}} """

    load_errors = []
    for klass in classes:
        for pcat, pinterface in _plugins_interface.items():
            if category is not None and not pcat == category:
                continue
            if all([hasattr(klass, attr) for attr in pinterface]):
                if klass.plugin_name in _all_plugins[pcat] and not overwrite:
                    err = '{0} is already set for {1}'.format(
                        klass.plugin_name, pcat)
                    load_errors.append((klass.__name__, '{}'.format(err)))
                    continue
                _all_plugins[pcat][klass.plugin_name] = klass()
            else:
                load_errors.append((
                    klass.__name__,
                    'does not match {} interface: {}'.format(pcat, pinterface)
                ))
    return load_errors